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

Дано числовое выражение, содержащее числа, знаки действий +, -, * и круглые скобки (), например 10-(3+6). Найти значение заданного выражения - C++

Восстановить пароль Регистрация
 
Lili_I
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 9
01.07.2013, 21:27     Дано числовое выражение, содержащее числа, знаки действий +, -, * и круглые скобки (), например 10-(3+6). Найти значение заданного выражения #1
программа на с++. нужно ООП. спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2013, 21:27     Дано числовое выражение, содержащее числа, знаки действий +, -, * и круглые скобки (), например 10-(3+6). Найти значение заданного выражения
Посмотрите здесь:

В строке записано выражение вида m/n, где m и n – натуральные числа. Дописать в строку значение этого выражения, округлив его до сотых. C++
Найти значение заданного выражения без использования условного оператора C++
C++ Рекурсия. Составьте программу, которая для заданного натурального числа n вычисляет значение выражения
Дано действительные числа х и у. Вычислить значение выражения: C++
C++ Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False): <выражение> :
Найти значение заданного выражения C++ C++
Дано целое число N (> 0). Найти значение выражения N - 1/(N-1) + 1/(N-2) C++
Найти значение арифметического выражения, заданного в виде строки C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mogost
 Аватар для Mogost
7 / 7 / 1
Регистрация: 07.04.2012
Сообщений: 51
01.07.2013, 22:20     Дано числовое выражение, содержащее числа, знаки действий +, -, * и круглые скобки (), например 10-(3+6). Найти значение заданного выражения #2
Никто за вас писать не будет...
Сама идея в том, чтобы записать выржание в постфиксной форме.
http://natalia.appmat.ru/c&c++/postfisso.html
Lili_I
0 / 0 / 0
Регистрация: 28.06.2012
Сообщений: 9
02.07.2013, 18:34  [ТС]     Дано числовое выражение, содержащее числа, знаки действий +, -, * и круглые скобки (), например 10-(3+6). Найти значение заданного выражения #3
Mogost, а мне и не надо. Я просто не могу понять, как делать. А уж набрать код я и сама могу

Добавлено через 7 часов 15 минут
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <condefs.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//-------------------------------Г‘ Г’ Г… ГЉ-------------------------------------
const int maxsize=50;
char values[maxsize];
int top=0;
 
bool empty()
     {
      if (top==0) return true;
         else return false;
     }
 
void push(char c)
     {
      if (top==maxsize) ShowMessage("Overflow in stack!!!");
         else values[top++]=c;
     }
 
void pop(char &c)
     {
      if (empty()) ShowMessage("Stack is empty!!!");
         else c=values[--top];
     }
 
//-------------------------ГЏ ГЋ Г‘ Г’ Г” Г€ ГЉ Г‘---------------------------------
void PostFix(char *in, char *res)
{
int i=0;
int n_r=0;
char c, temp;
 
push('%');
while (in[i]!='%')
      {
       c=in[i++];
 
       if (c=='(') {push(c); continue;}
 
       if (c==')')
          {
           pop(temp);
           while (temp!='(')
             {
              res[n_r++]=temp;
              pop(temp);
             }
           continue;
          } 
 
       if (c=='+'||c=='-')
          {
           pop(temp);
           if (temp=='%'||temp=='(')
              {
               push(temp);
               push(c);
              }
           else if (temp=='+'||temp=='-'||temp=='*'||temp=='/')
              {
               res[n_r++]=temp;
               push(c);
              }
           continue;
          }
       if (c=='*'||c=='/')
          {
           pop(temp);
           if (temp=='%'||temp=='('||temp=='+'||temp=='-')
              {
               push(temp);
               push(c);
              }
           if (temp=='*'||temp=='/')
              {
               res[n_r++]=temp;
               push(c);
              }
           continue;
          }
       else res[n_r++]=c;
      }
pop(temp);
while (temp!='%')
      {
       res[n_r++]=temp;
       pop(temp);
      }
}
 
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
char formula[100]="";
char resultat[100]="";
char temp_formula[100]="";
char turn_formula[100]="";
int  b=0, k, i=0, t=0, j=0;
 
Edit1->GetTextBuf(formula, 100);
while (formula[i]!=NULL)
      {
       if (formula[i]=='(') b++;
       if (formula[i]==')') b--;
       k=i;
       i++;
      }
if (b!=0) ShowMessage("ochibka na vhode!");
else
    {
formula[k+1]='%';
 
PostFix(formula, resultat);
Edit2->Text=resultat;
     }
}
//---------------------------------------------------------------------------
нужно чтобы он вычислял результат, есть предположения, как лучше это сделать?
Yandex
Объявления
02.07.2013, 18:34     Дано числовое выражение, содержащее числа, знаки действий +, -, * и круглые скобки (), например 10-(3+6). Найти значение заданного выражения
Ответ Создать тему
Опции темы

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