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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
UA_Serpent
0 / 0 / 0
Регистрация: 01.04.2011
Сообщений: 3
#1

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

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

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

Пользователь вводит с клавиатуры арифметическое выражение (используемые операции только сложение и вычитание). Посчитать его значение. Если в выражении встречаются другие символы, выдать сообщение, что выражение введено не корректно.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2011, 16:51     Посчитать выражение, введенное в строку
Посмотрите здесь:

Вычислить выражение, введенное в строку - C++
Помогите пожалуйста написать программу. Со строками вообще не имел дела. Друг попросил выручить. Заранее спасибо.

Вычислить выражение, введенное с клавиатуры - C++
Начали изучать класс string, получил задание, с клавиатуры вводиться математическое выражение, например, вида - (2+3)*4+1, получить...

Многопоточность. Посчитать выражение - C++
Собственно, вот выражение: x - (x^3\div3!) +(x^5\div5!) -(x^7\div7!) + (x^9\div9!). Помогите, пожалуйста, решить. Необходимо с помощью...

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

Посчитать выражение через циклы while и for - C++
Посчитать выражение через циклы while и for Условие на скриншоте Я пока делал только через for Вот : #include "stdafx.h" ...

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

Преобразовать строку в выражение - C++
Добрый день, вообщем суть проблемы такова, есть какая-то функция, к примеру y=cos(x) и эту функцию необходимо ввести с клавиатуры или...

Преобразовать строку, содержащую выражение на Си - C++
Преобразовать строку, содержащую выражение на Си с операциями (=,==,!=,a+=,a-=), в строку, содержащую эти же операции с синтаксисом языка...

Посчитать вхождение каждого слова в строку - C++
Вынужден просить вашей помощи: необходимо написать программу, которая бы считала вхождение каждого слова в строку (сколько раз встречается...

Указатели: посчитать количество вхождений подстроки в строку - C++
Не могу дописать программу. Заранее извените, ещё не умею вставлять код программы... Выделить код и на панели, где вводите текст,...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LaГushan
124 / 124 / 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++
2846 / 1783 / 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     Посчитать выражение, введенное в строку
Ответ Создать тему
Опции темы

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