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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Немного подправить код http://www.cyberforum.ru/cpp-beginners/thread299094.html
здравствуйте! есть код к задаче: даны два неубывающих массива x и y. найти их "пересечение", то есть неубывающий массив z, содержащий их общие элементы, причем кратность каждого элемента в массиве z равна минимуму его кратностей в массивах x и y. вот мой код с пояснениями, вроде все по логике, но работает некорректно, кто может ,подскажите где ошибка? const int n=10,m=10; int...
C++ Визуальная среда Помогите написать программу на С++, обеспечивающую создание списка абитуриентов. Предусмотреть ввод фамилии, имени и отчества, года рождения, оценок за вступительные экзамены (математика, физика, русский язык). Программа должна позволять сохранить список в файл, загрузить его и произвести сортировку по следующим полям в порядке убывания:; фамилия, имя, отчество; год рождения, общий балл за... http://www.cyberforum.ru/cpp-beginners/thread299091.html
В упорядоченном по убыванию массиве переставить местами максимальный элемент и второй элемент со значением, меньшим Р C++
В упорядоченном по убыванию массиве переставить местами максимальный элемент и второй элемент со значением, меньшим Р. Именуйте темы осмысленно! Название темы должно максимально полно отражать её содержимое.
как оформить в функции? C++
вот код,как его переделать? #include <iostream> #include <iomanip> #include <clocale> using namespace std; int main() { setlocale(LC_ALL, "Russian_Russia.1251"); int n;
C++ Поиск слова http://www.cyberforum.ru/cpp-beginners/thread299040.html
добрый вече программист подскажите алгоритм поиска слова в текстовом файле начинающиеся и заканчивающиеся заданной буквой и сохранить результат поиска в отдельный файл .
C++ Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до n 18 задача 1 лаба После удара о поверхность Земли мяч движется вертикально вверх со скорость 15 м\с. Найдите координату мяча над поверхностью Земли через 1 секунду и через 2 секунды после начала движения 22 задача 2 лаба Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до n 16 задача 3 лаба Для массива A вычислить наибольшее и наименьшее значения модуля разности между... подробнее

Показать сообщение отдельно
AC-93
13 / 13 / 0
Регистрация: 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;
}
только тут норм программа, с поддержкой неправильных вводов и десятичных дробей, но думаю догадаешься как убить.
 
Текущее время: 23:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru