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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.68
anya1433
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 49
#1

Написать программу,которая вычисляет значение арифметического выражения записанного в постфиксной форме,с помощью стека - C++

18.05.2011, 20:55. Просмотров 2773. Ответов 5
Метки нет (Все метки)

Написать программу,которая вычисляет значение арифметического выражения записанного в постфиксной форме,с помощью стека.Выражение правильное,допускаеются только однозначные числа и знаки +,-,*,/.
На С++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2011, 20:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать программу,которая вычисляет значение арифметического выражения записанного в постфиксной форме,с помощью стека (C++):

Организовать функцию для вычисления арифметического выражения записанного в постфиксной форме - C++
Нужна программа: Организовать функцию для вычисления арифметического выражения записанного в постфиксной форме Заранее благодарю ...

организовать функцию для вычисления арифметического выражения записанного в постфиксной форме - C++
Нужна программа: Организовать функцию для вычисления арифметического выражения записанного в постфиксной форме Заранее благодарю ...

Функция вычисляющая значение выражения, записанного в постфиксной форме в текстовом файле - C++
Описать функцию value (postfix), которая вычисляет как целое число значение выражения (без переменных), записанного в постфиксной форме в...

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

Вычисление выражения записанного в постфиксной форме - C++
требуется написать процедуру вычмсления выражения в постфиксной форме,например 453+-45/+*2^3+. мой код неработоспособный(( ...

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

5
magirus
18.05.2011, 21:22
  #2
 Комментарий модератора 
прошу называть темы максимально информативно
0
ValeryLaptev
Эксперт С++
1041 / 820 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 21:23 #3
А что такое постфиксная форма знаешь?
0
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
18.05.2011, 21:24 #4
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
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <locale.h>
#define MAX 100
#define MAX_INT 2000000
 
double get_doub(double numb, int *ok)
{
    char c;
    int rank = 0;
    while(isdigit(c = getchar()))
        numb = numb*10 + c-'0';
    if (c == '.')
        while(isdigit(c = getchar()))
        {
            rank++;
            numb = numb + (c-'0')/pow(10, rank);
        }
        if (c == '\n')
            *ok = 0;
        return numb;
}
 
double post(int *ok2)
{
    char c = 'a';
    int i = -1, j = 0;
    double stack[MAX] = {0};
    stack[0] = -(MAX_INT);
    
    c = getchar();
    while ((c != '\n') && (i < 1000))
    {
        if (isdigit(c))
        {
            int ok = 1;
            i++;
            *ok2 = 1;
            stack[i] = c-'0';
            stack[i] = get_doub(stack[i],&ok);
            if (ok == 0 && i != 0) 
            {
                *ok2 = ok;
                return stack[0];
            }
            else 
                if (ok == 0)
                {
                    return stack[0];
                }
        }
        else 
            if (i >= 1)
            {
                *ok2 = 1;
                i--;
                switch (c){
                case '+':
                    stack[i]+= stack[i+1];
                break;
                case '-':
                    stack[i]-= stack[i+1];
                break;
                case '*':
                    stack[i]*= stack[i+1];
                break;
                case ' ':
                    i++;
                break;
                case '/':
                    if (stack[i+1] == 0)
                    {
                        *ok2 = 0;
                        return stack [i];
                    }
                    else
                        stack[i]/= stack[i+1];
                break;
                default:
                    {   
                        *ok2 = 0;
                        return stack[0];
                    }
                }
            }
            else 
            {   
                *ok2 = 0;
                return stack[0];
            }
 
        c = getchar();
    }
    return stack[0];
}
 
int main()
{
    double numb = 1;
    int ok = 0 ;
    setlocale(LC_ALL, "Russian");
    numb = post(&ok);
    if (numb != -(MAX_INT))
    printf("%f \n ",numb);
    if (ok == 0)
        printf("Исходная строка содержала ошибку\n");
    return 0;
}
только тут норм программа, с поддержкой неправильных вводов и десятичных дробей, но думаю догадаешься как убить.
1
anya1433
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 49
18.05.2011, 21:28  [ТС] #5
Что это за функция isdigit?
0
AC-93
16 / 16 / 0
Регистрация: 27.01.2010
Сообщений: 150
18.05.2011, 21:30 #6
проверка яв-ся ли данный чар цифрой
0
18.05.2011, 21:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2011, 21:30
Привет! Вот еще темы с ответами:

Написать функцию, которая вычисляет значение выражения - C++
Написать функцию, которая вычисляет значение выражения, и определить ее значение для введенных пользователем значений фактических...

Написать программу, вычисляющую значение арифметического выражения - C++
1. Написать программу вычислений: Вещественный тип: (a+b)^3 Целочисленный тип: (a+b)^2 Числовые параметры задаются самостоятельно. ...

Динамические структуры данных.Стек. Значение выражения в постфиксной форме - C++
Пусть строка символов, введенная с клавиатуры, задает выражение, записанное в постфиксной форме (например, 6523+8*+3+*). В выражении...

Рекурсия. Составьте программу, которая для заданного натурального числа n вычисляет значение выражения - C++
Составьте программу, которая для заданного натурального числа n вычисляет значение выражения: 1/1+1/2+1/3+1/4+1/...n-1+1\n


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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