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

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

Восстановить пароль Регистрация
 
Bulding
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 47
03.05.2013, 10:50     Вычислить значение выражения, используя стек операндов #1
Дано арифметическое выражение длиной до 30 символов, заканчивающееся знаком равенства. Выражение содержит знаки операции +, -, *, / и однозначные целые числа и представлено в обратной польской записи. Вычислить значение выражения, используя стек операндов. Язык программирования С++. Помогите пожалуйста
Пример: 345+2*63/-+ = 19
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.05.2013, 10:50     Вычислить значение выражения, используя стек операндов
Посмотрите здесь:

ИСпользуя функцию, вычислить значения выражения. C++
C++ Вычислить значение выражения,используя цикл for
C++ Вычислить значение выражения, используя различные вещественные типы данных. (есть код)
Динамические структуры данных.Стек. Значение выражения в постфиксной форме C++
C++ Вычислить значение выражения, используя классы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Issues
429 / 364 / 37
Регистрация: 06.08.2012
Сообщений: 961
03.05.2013, 11:01     Вычислить значение выражения, используя стек операндов #2
http://ru.wikiversity.org/wiki/Обрат...еры_реализации
Bulding
0 / 0 / 0
Регистрация: 13.12.2012
Сообщений: 47
04.05.2013, 18:23  [ТС]     Вычислить значение выражения, используя стек операндов #3
Здравствуйте. Помогите с прогой пожалуйста.

Дано арифметическое выражение длиной до 30 символов, заканчивающееся знаком равенства. Выражение содержит знаки операции +, -, *, / и однозначные целые числа и представлено в обратной польской записи. Вычислить значение выражения, используя стек операндов. Язык программирования С++. Помогите пожалуйста

Пример: 345+2*63/-+ = 19

Прогу сделал, но почему-то выводит не тот результат.

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
#include <stdio.h>
#include <iostream>
using namespace std;
 
int Chislo ( char text [], int *i )
{
    int c = 0;
    while ( text [*i] >= '0' && text [*i] <= '9' )
    {
        c = c * 10 + ( text [*i] - '0' );
        (*i)++;
    }
    return c;
}
 
int main()
{
    char text [80];
    int i;
    float opd [3];
    char opc [3];
    int pr [3];
    int j = -1;
    cout << "Vvedite verazenie: ";
    gets ( text );
    i = -1;
    do
    {
        i++;
        opd [++j] = Chislo ( text, &i );
        opc [j] = text [i];
        switch ( text [i] )
        {
            case '+':
            case '-': pr [j] = 1; break;
            case '*':
            case '/': pr [j] = 2; break;
            case ' ': pr [j] = 0;
        }
        while ( j > 0 && pr [j] <= pr [j-1])
        {
            switch ( opc [j-1])
            {
                case '+': opd [j-1] = opd [j-1] + opd [j]; break;
                case '-': opd [j-1] = opd [j-1] + opd [j]; break;
                case '*': opd [j-1] = opd [j-1] + opd [j]; break;
                case '/': opd [j-1] = opd [j-1] / opd [j];
            }
            opd [j-1] = opc [j];
            pr [j-1] = pr [j];
            j = j-1;
        }
    }
    while ( text [i] != ' ');
    cout << "Rezultat: " << opd [0] << endl;
 
    system ( "pause" );
    return 0;
}
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
04.05.2013, 21:55     Вычислить значение выражения, используя стек операндов #4
Числа все по условию однозначные, а Chislo делает число из нескольких символов. В 45-й и 46-й строчках сложение вместо вычитания и умножения.
tyreu
Заблокирован
11.09.2014, 17:09     Вычислить значение выражения, используя стек операндов #5
а что такое opd и opc?
Yandex
Объявления
11.09.2014, 17:09     Вычислить значение выражения, используя стек операндов
Ответ Создать тему
Опции темы

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