Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/47: Рейтинг темы: голосов - 47, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 49

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

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

Студворк — интернет-сервис помощи студентам
Написать программу,которая вычисляет значение арифметического выражения записанного в постфиксной форме,с помощью стека.Выражение правильное,допускаеются только однозначные числа и знаки +,-,*,/.
На С++
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2011, 20:55
Ответы с готовыми решениями:

Программа, которая вычисляет значения арифметического выражения, записанного в постфиксной форме, с помощью стека
Составить программу,которая вычисляет значения арифметического выражения, записанного в постфиксной форме, с помощью стека. Выражения...

Напишите программу, которая вычисляет значение арифметического выражения, записанного в постфиксной форме
Напишите программу, которая вычисляет значение арифметического выражения, записанного в постфиксной форме. В выражении используются только...

Рекурсия: вычисление значения арифметического выражения, записанного в постфиксной форме
Разработайте рекурсивную функцию или процедуру для решения задачи. Составьте функцию, вычисляющую значение арифметического выражения,...

5
18.05.2011, 21:22
 Комментарий модератора 
прошу называть темы максимально информативно
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
18.05.2011, 21:23
А что такое постфиксная форма знаешь?
0
18 / 18 / 1
Регистрация: 27.01.2010
Сообщений: 150
18.05.2011, 21:24
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
0 / 0 / 0
Регистрация: 20.01.2010
Сообщений: 49
18.05.2011, 21:28  [ТС]
Что это за функция isdigit?
0
18 / 18 / 1
Регистрация: 27.01.2010
Сообщений: 150
18.05.2011, 21:30
проверка яв-ся ли данный чар цифрой
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.05.2011, 21:30
Помогаю со студенческими работами здесь

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

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

Вычисление арифметического выражения в постфиксной форме с использованием стека
Помогите найти ошибку в функции. Шлет в стек мусор при выполнении знаковых операций и ничего не выводит. С переводом в постфиксную все...

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

Напишите программу вычисления выражения, записанного в постфиксной форме
напишите программу вычисления, записанного в постфиксной форме ( требуется писать через рекурсию )


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru