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

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

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

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

03.05.2013, 10:50. Просмотров 993. Ответов 4
Метки нет (Все метки)

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

Вычислить значение выражения используя стек - C++
Помогите с заданием пожалуйста... В текстовом файле записано без ошибок логическое выражение следующего вида: <выражение>::=true |...

Вычислить выражения используя односвязные (стек) и двусвязные (очередь) информационные структуры - C++
Помогите пожалуйста. Даны x,y,z. Вычислить a,b, если: a=\frac{3+e^{y-1}}{1+x^2|y -tgz|}, b=(1+tg^{2} \frac{z}{2}); 1-ый пример надо сделать...

Вычислить значение выражения, используя циклы - C++
Ответ не совпадает, думаю проблема в степени числа а. Можете указать на ошибку и как её исправить? #include <iostream> #include...

Используя цикл for вычислить значение выражения - C++
С клавиатуры вводится натуральное число N. Написать программу, вычисляющую значение выражения: Y =...

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

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

4
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
03.05.2013, 11:01 #2
http://ru.wikiversity.org/wiki/Обрат...еры_реализации
0
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;
}
0
Somebody
2789 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,193
Завершенные тесты: 1
04.05.2013, 21:55 #4
Числа все по условию однозначные, а Chislo делает число из нескольких символов. В 45-й и 46-й строчках сложение вместо вычитания и умножения.
0
tyreu
Заблокирован
11.09.2014, 17:09 #5
а что такое opd и opc?
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2014, 17:09
Привет! Вот еще темы с ответами:

Вычислить значение выражения используя функцию - C++
Здравствуйте!Помогите написать программу. Вот условие: Используя подпрограммы, для данных действительных чисел a, b, c...

Вычислить значение выражения используя рекурсивную функцию - C++
нужна помощь z=(n!+m!)*n! Значение n,m вводит пользователь . Учесть что 0!=1 , 1!=1 Добавлено через 16 минут #include...

Вычислить значение выражения, используя различные вещественные типы данных. (есть код) - C++
Доброго времени суток. Есть задание и есть код к задачам. Не могу довести до финального завершения. Помогите решить пожалуйста. 2. ...

Используя пользовательскую рекурсивную функцию вычисления факториала вычислить значение заданного выражения - C++
Даны целые неотрицательные n и m. Составить программу вычисления 1 = (m! + n! )/(m+n)!, используя рекурсивную функцию вычисления факториала...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
11.09.2014, 17:09
Ответ Создать тему
Опции темы

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