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

Алгоритм сортировочной станции(вычисление по обратной польской записи). - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ mpi скиньте кто нибудь несколько примеров http://www.cyberforum.ru/cpp-beginners/thread392723.html
Скиньте кто сможет любые примеры которые по проще, например: (2+2)*(3+3) вот что бы посчитать это параллельно, буду очень признателен, а если кто нибудь подскажет хорушую литературу кроме Антонов А.С будет вообще замечательно.
C++ из Борланда в Студию уважаемые господа джуниоры и синьоры программисты. помогите мне чайнику разобраться с проблемой плиз есть проект (игра) написанная на borland c++ 5.02 и есть Visual Studio 2010 как перенести проект на VS2010? для получения исходников пишите на mikka47@gmail.com http://www.cyberforum.ru/cpp-beginners/thread392719.html
проверка C++
Даны вещественные массивы F, M.Для каждого массива определить произведение положительных элементов ,расположенных в чётных строках массива, и произведение положительных элементов, расположенных в нечётных строках массива. #include < iostream.h> #include <iomanip.h> //прототипы функций void input ( float ,char); void schetproduct (float, float *, float *); void output ( float , char ,...
проверить задачу на ошибки C++
Даны вещественные массивы F, M.Для каждого массива определить произведение положительных элементов ,расположенных в чётных строках массива, и произведение положительных элементов, расположенных в нечётных строках массива. #include < iostream.h> #include <iomanip.h> //прототипы функций void input ( float ,char); void schetproduct (float, float *, float *); void output ( float , char ,...
C++ Определить размерность массива по указателю на него http://www.cyberforum.ru/cpp-beginners/thread392680.html
Дано: template< typename T > void info( T * x ) и int a; info( a ); int b; info( b ); int c; info( c ); int d; info( d ); int e; info( e );
C++ проверить решение Даны вещественные массивы A S.Для каждого массива определить количество элементов предшествующих первому отрицательному элементу массива. #include <iostream.h> #include <iomanip.h> // прототипы функций void inputmas (int ,char); int schet (int); void outrez (int ,char ,int); void main() { подробнее

Показать сообщение отдельно
usatik
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 4

Алгоритм сортировочной станции(вычисление по обратной польской записи). - C++

27.11.2011, 06:22. Просмотров 2944. Ответов 6
Метки (Все метки)

Всем привет.
Есть вот такой код:
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
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
const int SIZE = 256;
 
class stack{
    int p;
    int data[SIZE];
public:
    stack(){
        for (int i = 0; i < SIZE; i++)
            data[i] = 0;
        p = 0;
    }
    int pop(){
        p--;
        return data[p];
    }
    void push(int num){
        data[p] = num;
        p++;
    }
}
 
int iGetNum(stack &num, int Dig){
    int razr = 1;
    int number = 0;
    for (int i = 0; i < Dig; i++){
        number += num.pop() * razr;
        razr *= 10;
    }
    return number;
}
 
int iPower(int n, int k){
    int c = 1;
    while (k != 1){
        if (k % 2 == 0){
            k /= 2;
            n *= n;
        }
        else{
            k--;
            c *= n;
        }
    }
    return n * c;
}
 
int main()
{
    ifstream input("input.txt");
    ofstream output("output.txt");
    char cTmp;
    stack num;
    stack data;
    int iTmp = 0;
    int iAop = 0;
    int iBop = 0;
    int iDigits = 0;//количество считанных цифр числа
    while (!input.eof()){
        input >> cTmp;
        if (cTmp == ' ') continue;
        iTmp = (int)(cTmp - '0');
        while (iTmp => 0 && iTmp <= 9){//пока идут цифры, записывать из в стек для цифр
            num.push(iTmp);
            input >> cTmp;
            iDigits++;
        }
        if (iDigits == 1)
            data.push(num.pop());
        else
            data.push(iGetNum(num, iDigits)); // запихиваем в стек число
        iDigits = 0;
        if (cTmp == '+'){
            iBop = data.pop();
            iAop = data.pop();
            data.push(iAop + iBop);
        }
        if (cTmp == '-'){
            iBop = data.pop();
            iAop = data.pop();
            data.push(iAop - iBop);
        }
        if (cTmp == '*'){
            iBop = data.pop();
            iAop = data.pop();
            data.push(iAop * iBop);
        }
        if (cTmp == '/'){
            iBop = data.pop();
            iAop = data.pop();
            data.push(iAop / iBop);
        }
        if (cTmp == '^'){
            iBop = data.pop();
            iAop = data.pop();
            data.push(iPower(iAop, iBop));
        }
    }
    output << data.pop();
    input.close();
    output.close();
    return 0;
}
Задумывалось, что он будет считать выражение уже записанное в обратной польской нотации.
Компилиться он отказывается, выдавая следующие:

Код
26: new types may not be defined in a return type
26: extraneous 'int' ignored
     in function 'stack iGetNum(stack&, int)';
33: conversion from 'int' to non-scalar type 'stack' requested
     in function 'int main()'
66: expected primary-expression before '>' token
74: no matching function for coll to 'stack::push(stack)'
note: candidates are: void stack::push(int)
Среда Dev-C++.
Вобщем я что-то там нахимичил и не могу разобраться с этими ошибками.
Помогите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru