Форум программистов, компьютерный форум CyberForum.ru

Посчитать выражение, введенное в строку - C++

Восстановить пароль Регистрация
 
UA_Serpent
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 3
01.04.2011, 16:51     Посчитать выражение, введенное в строку #1
Что-то запутался, помогите пожалуйста добрым кодом на следующую задачу:

Пользователь вводит с клавиатуры арифметическое выражение (используемые операции только сложение и вычитание). Посчитать его значение. Если в выражении встречаются другие символы, выдать сообщение, что выражение введено не корректно.
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LaГushan
123 / 123 / 14
Регистрация: 12.03.2011
Сообщений: 227
01.04.2011, 17:12     Посчитать выражение, введенное в строку #2
Страуструп описывает создание простого калькулятора, ознакомьтесь.
UA_Serpent
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 3
02.04.2011, 10:32  [ТС]     Посчитать выражение, введенное в строку #3
LaГushan
Почитал, но это не совсем то что мне нужно.

Я нашел функцию atoi которая выделит из строки цифры и знаки + и -, и если операция будет к примеру 2+2 или 4-3 то все считается правильно, но если написать 2-3+3 я получаю -4, atoi почему-то возвращает последнее значение как "-3" не могу понять почему.
Еще я не делал проверку на числа больше 10, но мне бы сначала разобраться с предыдущим абзацем.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
02.04.2011, 15:03     Посчитать выражение, введенное в строку #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Если выражение будет содержать только +/- то можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <algorithm>
#include <sstream>
 
int main(){
  std::string expression;
  std::cout << "\n\nEnter expression: ";
  std::cin >> expression;
  std::replace(expression.begin(), expression.end(), '+', ' ');
  for(size_t i = 0; i < expression.length(); ++i)
    if(expression[i] == '-')
      expression.insert(i++, 1, ' ');
  std::istringstream ist(expression);
  int sum = 0, num;
  while(ist >> num)
    sum += num;
  std::cout << "\n\nResult = " << sum << std::endl;
  return 0;
}
Yandex
Объявления
02.04.2011, 15:03     Посчитать выражение, введенное в строку
Ответ Создать тему
Опции темы

Текущее время: 06:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru