Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
UA_Serpent
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 3
#1

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

01.04.2011, 16:51. Просмотров 485. Ответов 3
Метки нет (Все метки)

Что-то запутался, помогите пожалуйста добрым кодом на следующую задачу:

Пользователь вводит с клавиатуры арифметическое выражение (используемые операции только сложение и вычитание). Посчитать его значение. Если в выражении встречаются другие символы, выдать сообщение, что выражение введено не корректно.
http://www.cyberforum.ru/cpp-beginners/thread289617.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2011, 16:51
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Посчитать выражение, введенное в строку (C++):

Вычислить выражение, введенное с клавиатуры
Начали изучать класс string, получил задание, с клавиатуры вводиться...

Многопоточность. Посчитать выражение
Собственно, вот выражение: x - (x^3\div3!) +(x^5\div5!) -(x^7\div7!) +...

Вывести определенную строку в ответ на введенное определенное слово
Хочу написать программу, которая выводит определенную фразу в ответ на...

Посчитать выражение через циклы while и for
Посчитать выражение через циклы while и for Условие на скриншоте Я пока делал...

Посчитать выражение формулой Горнера, вопрос- как?
Не представляю, как реализовать. С математикой проблемно из-за...

3
LaГushan
124 / 124 / 42
Регистрация: 12.03.2011
Сообщений: 227
01.04.2011, 17:12 #2
Страуструп описывает создание простого калькулятора, ознакомьтесь.
0
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, но мне бы сначала разобраться с предыдущим абзацем.
0
asics
Freelance
Эксперт С++
2854 / 1789 / 355
Регистрация: 09.09.2010
Сообщений: 3,841
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2011, 15:03
Привет! Вот еще темы с решениями:

Ввести строку и слово. Вставить введенное слово за пятым словом в строке
Помогите ребят. Нужно написать программу на С++ без использования библиотек...

Ввести строку и слово. Вставить введенное слово за самым коротким словом в строке.
помогите

Преобразовать строку в выражение
Добрый день, вообщем суть проблемы такова, есть какая-то функция, к примеру...

Преобразовать строку, содержащую выражение на Си
Преобразовать строку, содержащую выражение на Си с операциями...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru