![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
stan90 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 12.11.2009 Репутация: нет Всего: нет |
Здравствуйте,задача заключается в следующем.
Нужно из файла прочитать выражение,например 2+2*3, вычислить его и записать в файл выражение с ответом (2+2*3 = 8). Трудность заключается в чтении из файла. Получилось сделать пока только так
пробовал сделать так ifstream in("test.txt");char c = in.get(); но тогда не распознаются операторы * и /. |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Почему float? Из-за деления?
Вы уверены, что предложенная схема воспроизведёт этот результат? Учитываются ли приоритет операций * и / над операциями + и -? Отладчиком посмотреть? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Не нужно возиться с файлом - прочитайте в строку и разбирайте там.
Нужны функции: 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() и т.д. если они нужны Начинается вычисление с суммы. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |