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

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

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

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

01.07.2013, 21:27. Просмотров 741. Ответов 2
Метки нет (Все метки)

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

Удалить из заданного текста все части, заключенные в круглые скобки - C++
Написать программу удаляющую из заданного текста все части, заключенные в круглые скобки, вместе со скобками.

Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим образом («T» — True, «F» — False): <выражение> : - C++
помогите пожалуйста решить задачку на рекурсию Вывести значение логического выражения, заданного в виде строки S. Выражение определяется...

Дано действительные числа х и у. Вычислить значение выражения: - C++
выражения:(| х | - | у |) / (1 + | х * у |) Для Microsoft Visual Studio 2010 Запрещено размещать тему в нескольких разделах...

Дано целое число N (> 0). Найти значение выражения N - 1/(N-1) + 1/(N-2) - C++
Дано целое число N (&gt; 0). Найти значение выражения N - 1/(N-1) + 1/(N-2) .... Условный оператор не использовать.

Дана строка, изображающая арифметическое выражение. Найти значение выражения - C++
дана строка, изображающая арифмитическое вырожение вида &quot;&lt;число&gt;+или-&lt;число&gt;+или-&lt;число&gt;+или-.....&lt;число&gt;+или-&gt;&quot; где на месте знака...

Найти значение арифметического выражения, заданного в виде строки - C++
Помогите пожалуйста! Ввести с клавиатуры строку, которая содержит арифметическое выражение вида a+b+c.(например 10+2+1). Найти значение...

Найти значение заданного выражения без использования условного оператора - C++
Скоро экзамен , кто чем может ) Помоги ближнему , ибо смех продлевает жизнь...) 12. Дано целое число N (&gt; 0). Найти значение...

В строке записано выражение вида m/n, где m и n – натуральные числа. Дописать в строку значение этого выражения, округлив его до сотых. - C++
В строке записано выражение вида m/n, где m и n – натуральные числа. Дописать в строку значение этого выражения, округлив его до сотых.

Дано действительное число а. Найти среди чисел 1, 1+1/2, 1, 1+1/2+1/3, . первое, большее заданного числа а - C++
Дано действительное число а. Найти среди чисел 1, 1+1/2, 1, 1+1/2+1/3, ... первое, большее заданного числа а.

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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). Найти значение заданного выражения
Ответ Создать тему
Опции темы

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