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

математическое выражение из string в int - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
lifestyle
Mobile Developer
 Аватар для lifestyle
230 / 226 / 4
Регистрация: 10.05.2009
Сообщений: 917
31.10.2010, 23:51     математическое выражение из string в int #1
Допустим есть строка вида (1+2*5)-2
как результат данного выражения перевестив int, не ужели парсить ручками???
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
31.10.2010, 23:54     математическое выражение из string в int #2
Имеетсо такой код,кинуть ??
lifestyle
Mobile Developer
 Аватар для lifestyle
230 / 226 / 4
Регистрация: 10.05.2009
Сообщений: 917
31.10.2010, 23:58  [ТС]     математическое выражение из string в int #3
Цитата Сообщение от Asics^ Посмотреть сообщение
Имеетсо такой код,кинуть ??
если можно, буду очень признателен.
контакты в личке.

П.С.
Если есть доп. варианты-такие как встроенный функции делающие это, то тема актуальна еще.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8505 / 2172 / 61
Регистрация: 07.03.2007
Сообщений: 10,839
Завершенные тесты: 1
31.10.2010, 23:59     математическое выражение из string в int #4
lifestyle, тут вам не парсить надо, а реализовать ПОЛИЗ
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
31.10.2010, 23:59     математическое выражение из string в int #5
lifestyle, Парсить онли. Писать свой кальк)
lifestyle
Mobile Developer
 Аватар для lifestyle
230 / 226 / 4
Регистрация: 10.05.2009
Сообщений: 917
01.11.2010, 00:05  [ТС]     математическое выражение из string в int #6
Lord_Voodoo,
что значит ПОЛИЗ??
может подскажете куда копать в моей задаче , может я не туда рою вообще?
ЗАДАЧА
есть например 4 числа: 2 4 6 8
и программа должна проверить существует ли комбинация данных чисел и операторов и расстановка скобочек чтобы получилось 25.
это конкртеный пример, вообще надо на обобщеный.
я реализовал алг, по перебору всех комбинаций чисел и операторов и почти разобрался со скобками
после чего думаю все это добро запихнуть в строку и потом посчитать?на правильном ли я пути или есть более простая реализация?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
01.11.2010, 00:08     математическое выражение из string в int #7
lifestyle, Если через строку нужно писать почти свой калькулятор, то есть синт. анализатор, использование лексем и прочие интересные штуки. Примеры есть в теме http://www.cyberforum.ru/cpp-beginne...ead153746.html где-то около конца. Как-то так.
Ну или пользоваться обратной польской нотацией, хотя хрен редьки не слаще, имхо
asics
Freelance
Эксперт C++
 Аватар для asics
2838 / 1775 / 144
Регистрация: 09.09.2010
Сообщений: 3,842
01.11.2010, 00:12     математическое выражение из string в int #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Может не то что надо,но всё же
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <conio.h>
#include <cmath>
#define _USE_MATH_DEFINES
using namespace std; 
 
float number()
{
      int res = 0;
      for(;;)
      {
             char c = cin.get();
             if(c >= '0' && c <= '9')
                res = res * 10 + c - '0';
             else
             {
                 cin.putback(c);
                 return res;
             }   
      }
}
 
float expr();
 
float ckobki()
{
      char c = cin.get();
      if(c == '(')
      {  
           float x = expr();
           cin.get();
           return x;
      }
      else 
      {
           cin.putback(c);
           return number();
      }
}
 
float factor()
{
      int x = ckobki();
      for(;;)
      {
      char c = cin.get();
      switch(c)
      {
               case '*':
                    x *= ckobki();
                    break;
               case '/':
                    x /= ckobki();
                    break;
               default:
                    cin.putback(c);
                    return x;             
      }
   }
}
 
float expr()
{
      int x = factor();
      for(;;)
      {
      char c = cin.get();
      switch(c)
      {
               case '+':
                    x += factor();
                    break;
               case '-':
                    x -= factor();
                    break;
               default:
                    cin.putback(c);
                    return x;             
      }
   }
}
 
int main()
{
    cout << "Bedute Bupawehue: ";
    float res = expr();
    cout << "Pezyltat = " << res << endl;
    getch();
    return 0;
}
addrol
0 / 0 / 0
Регистрация: 17.03.2012
Сообщений: 5
20.03.2012, 15:43     математическое выражение из string в int #9
Похоже пример тот, что нужно но я "туговат" немного =)
Не могли бы подсказать, как этот код будет выглядеть если исходная строка находится в Edit->Text?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2012, 20:34     математическое выражение из string в int
Еще ссылки по теме:

Как правильно записать математическое выражение? C++
C++ Напишите,пожалуйста, это математическое выражение на С++
Корректно записать математическое выражение C++

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

Или воспользуйтесь поиском по форуму:
addrol
0 / 0 / 0
Регистрация: 17.03.2012
Сообщений: 5
22.03.2012, 20:34     математическое выражение из string в int #10
Что искал, нашел, может кому полезно будет.

http://lord-n.narod.ru/download/book..._C/24/2404.htm

Простая программа синтаксического анализа мат. выражений
Yandex
Объявления
22.03.2012, 20:34     математическое выражение из string в int
Ответ Создать тему
Опции темы

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