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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
10.09.2010, 22:01     Вычислить выражение, введенное с клавиатуры #1
Начали изучать класс string, получил задание, с клавиатуры вводиться математическое выражение, например, вида - (2+3)*4+1, получить результат решения. Подскажите как считать числа с строки. Как разбить строку на числа и вычислить выражение. Не пойму как это делается.

Добавлено через 30 минут
вот пытаюсь разобраться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
 
#include <stdlib.h>
#include<iostream>
#include <string>
 
using namespace std;
 
void main()
 
{
    setlocale(LC_CTYPE,"Rus");
    string input;
    cout<<"Введите строку: \n";
    cin>>input;
    string outp;
    string outp2;
    string rezult;
    int plus=input.find('+');
    int plus2=input.rfind('+');
    outp2=input.substr(0,plus2);
    outp=input.substr(0,plus);
    int t=reinterpret_cast<int>(outp.c_str());
    int t2=reinterpret_cast<int>(outp2.c_str());
    int rez=t+t2;
    cout<<reinterpret_cast<string*>(rez)<<endl;
 
}
но в результате получаю какой то адресс.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.09.2010, 22:01     Вычислить выражение, введенное с клавиатуры
Посмотрите здесь:

Определить, делится ли на три введенное с клавиатуры целое число C++
C++ С клавиатуры вводится выражение вида с ор с (с-цифра, ор-знак операции). Вычислить значение выражения. Использовать оператор вариантов.
Делится ли введенное с клавиатуры число на 5 C++
C++ Вычислить выражение (значение всех переменных вводятся с клавиатуры)
Выводит только введенное слово с клавиатуры! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
10.09.2010, 22:02     Вычислить выражение, введенное с клавиатуры #2
Crudelis, Строку в int так переводить не стоит.
Хотя бы
C++
1
atoi(outp.c_str());
C++
1
cout<<reinterpret_cast<string*>(rez)<<endl;
И это я бы тоже посоветовал заменить на itoa.

Но может я во что-то не врубаю... Но откуда вообще такое приведение нашли?
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
10.09.2010, 22:03     Вычислить выражение, введенное с клавиатуры #3
алгоритм разбивки посмотрите тут. или вам нужно узнать как правильно перевести число в строку?
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
10.09.2010, 22:08  [ТС]     Вычислить выражение, введенное с клавиатуры #4
iama, у меня задание заключается в чем, человек вводит с клавы математическую строку, например 2+5*(5+10) вводит он это в строку, мне нужно разобрать строку на числа и сделать решение, а так же чтоб программа сама понимала что нужно прибавлять, либо умножать, делать в начале действия в скобке и так далее...
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
10.09.2010, 22:09     Вычислить выражение, введенное с клавиатуры #5
Crudelis, и в чем проблемма?
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
10.09.2010, 22:11  [ТС]     Вычислить выражение, введенное с клавиатуры #6
Цитата Сообщение от Lavroff Посмотреть сообщение
Но откуда вообще такое приведение нашли?
мы сейчас проходим Преобразование типов в стиле С++.
reinterpret_cast переводит один тип в совершенно другой. Например, его можно использовать для перевода указателя в целый тип и наоборот. Оператор reinterpret_cast следует использовать для перевода типов указателей, которые несовместимы по своей природе.
из-за этого я его и использовал

Добавлено через 1 минуту
iama, проблема заключается в том что я не могу разобраться как из строки взять символы и математические действия, как взять символы уже подсказал Lavroff, спасибо ему, а как быть с скобками и математ. действиями(+/-* и т.д.).. вот тут загвоздка
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
10.09.2010, 22:14     Вычислить выражение, введенное с клавиатуры #7
алгоритм разбивки в первом посте. вы знаете, что такое алгоритм?
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
10.09.2010, 22:18  [ТС]     Вычислить выражение, введенное с клавиатуры #8
да конечно знаю, вот не могу сложить алгоритм на свою задачу, что за чем проверять при обработке строки
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
10.09.2010, 22:22     Вычислить выражение, введенное с клавиатуры #9
Наверняка для этого я и скинул вам ссылку на него. Может быть, есть смысл в том, чтобы воспользоваться ею?
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
10.09.2010, 22:27  [ТС]     Вычислить выражение, введенное с клавиатуры #10
iama, да, за ссылку спасибо, вот пытаюсь разобраться что там)

Добавлено через 4 минуты
т.е. как я понял вначале нужно находить что в скобках, делать вычисление в скобках, потом из строки удалять то что в скобках вместе с скобками и на это место ставить результат и так далее пока не останется грубо говоря строка а+б
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
10.09.2010, 22:29     Вычислить выражение, введенное с клавиатуры #11
Crudelis, примерно так, эволюционируете прямо на глазах
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
10.09.2010, 22:32  [ТС]     Вычислить выражение, введенное с клавиатуры #12
iama, спасибо за комплимент) проблема вот в чем, как найти число до знака вычисления к примеру + я понял, а как найти число к-е идет после плюс... вот не пойму.
пример 2+5, первую 2 как взять я понял а вот как 5 взять....
iama
 Аватар для iama
1249 / 974 / 48
Регистрация: 30.07.2010
Сообщений: 5,297
10.09.2010, 22:36     Вычислить выражение, введенное с клавиатуры #13
Цитата Сообщение от Crudelis Посмотреть сообщение
пример 2+5, первую 2 как взять я понял а вот как 5 взять....
мде... в таком случае могу посоветовать только это. только там вроде не чистый си++, но принцип ведь один и тот же
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
10.09.2010, 22:49  [ТС]     Вычислить выражение, введенное с клавиатуры #14
ммммм это тот мальчик с гнусавым голосом))))))))))) ну всё равно спасибо за помощь, багаж получил буду думать
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
11.09.2010, 13:49     Вычислить выражение, введенное с клавиатуры #15
Crudelis,
Это, конечно, дело вкуса, но я бы всё-таки использовал обратную польскую запись... Поищите в Вики
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2010, 15:33     Вычислить выражение, введенное с клавиатуры
Еще ссылки по теме:

Значение введенное с клавиатуры присвоить в переменную C++
Для введенного с клавиатуры значения вычислить заданное выражение C++
C++ Вычислить сколько раз введенное с клавиатуры число встречаеться в массиве

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

Или воспользуйтесь поиском по форуму:
nikkka
Мат в 32 хода
 Аватар для nikkka
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
11.09.2010, 15:33     Вычислить выражение, введенное с клавиатуры #16
Crudelis, в данной теме, около 3 страниц уделено ОПЗ и калькуляторам. см. оглавление. алгоритм найдёшь здесь. Разбиение на токены в этой теме.
Yandex
Объявления
11.09.2010, 15:33     Вычислить выражение, введенное с клавиатуры
Ответ Создать тему
Опции темы

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