Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Вычисление из файла |
Автор: stan90 2.2.2012, 14:52 | ||
Здравствуйте,задача заключается в следующем. Нужно из файла прочитать выражение,например 2+2*3, вычислить его и записать в файл выражение с ответом (2+2*3 = 8). Трудность заключается в чтении из файла. Получилось сделать пока только так
пробовал сделать так ifstream in("test.txt");char c = in.get(); но тогда не распознаются операторы * и /. |
Автор: feodorv 2.2.2012, 15:48 |
Почему float? Из-за деления? Вы уверены, что предложенная схема воспроизведёт этот результат? Учитываются ли приоритет операций * и / над операциями + и -? Отладчиком посмотреть? |
Автор: math64 2.2.2012, 19:14 |
Не нужно возиться с файлом - прочитайте в строку и разбирайте там. Нужны функции: void skipws(const string& s, int& index) - пропуск пробелов float number(const string& s, int& index) - перед рабором index указывает на начало числа, после разбора - на конец float term(const string& s, int& index) - если перед разбором index указывает на '(' вычисляется sum() до соответствующей ')', если index указывает на букву, вызывается func() если нужно иначе считывается число number() float prod(const string& s, int& index) - выполняются умножение и деление, для получения аргументов вызывается term() float sum(const string& s, int& index) - выполняются сложение и вычитание, для получения аргументов вызывается prod() float func(const string& s, int& index) - вычисления функций (sqrt(), sin(), cos(), log() и т.д. если они нужны Начинается вычисление с суммы. |