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

Срочно! Алгоритм Бауэра Замельзона! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ кейрус отказывается работать!! http://www.cyberforum.ru/cpp-beginners/thread279732.html
вроде уже какой по счёту кейрус скачиваю с инета.. устанавливаю а в борланде язык не переключается((( или мб это из за того что у меня вин 7 ? Добавлено через 36 секунд чё подскажите сделать с...
C++ Как разбить массив по 3 елемента и засунуть в другой массив Здарова форумчане. Помогите, кому не лень решить задачу по программированию на c++ Кароче нам дан массив чисел от 1 до 18. Сначала нам нужно разбить массив по три елемента, т.е от 1 до 3, от 3 до 6,... http://www.cyberforum.ru/cpp-beginners/thread279729.html
Прерывание C++
При вызове прерывание компилятор пишет ошибка доступа. #include <iostream> using namespace std; char a = "hello"; int main() { _asm {
Переход с формы на форму C++
Сетяне, скажите! Какой код нужно писать чтобы при нажатии кнопки открылось другое окно? буду безгранично благодарен :~)
C++ При установке показывает Error 1317 http://www.cyberforum.ru/cpp-beginners/thread279690.html
У меня при установке Borland C++ Builder Enterprise v6.0 показывает ошибку Error 1317.An error occured while attempting to create the directory C:\Users\8255~1\AppData Скажите что делать? Я...
C++ Аналог AnsiString в Qt Чтобы в программе использовать тип AnsiString, что нужно подключить : #include *** ???? подробнее

Показать сообщение отдельно
Liv-pooL
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 142

Срочно! Алгоритм Бауэра Замельзона! - C++

19.04.2011, 22:20. Просмотров 834. Ответов 0
Метки (Все метки)

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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <stdio.h>
#include <math.h>
#include <iostream>
using namespace std;
 
char stack_z[10];
double stack_c[10];
int tos_z=0;
int tos_c=0;
char   number[11];  
/*операции со стеками*/
void push_z (char a)
{
    stack_z[tos_z]=a;
    tos_z++;
}
 
void push_c (double a)
{
    stack_c[tos_c]=a;
    tos_c++;
}
 
char pop_z ()
{
    tos_z--; 
    return stack_z[tos_z];
}
 
double pop_c ()
{
    tos_c--; 
    return stack_c[tos_c];
}
 
void do_op (); 
 
int main()      
{
    FILE *in; 
    in=fopen("expr_valin.txt", "r");
    char ch, d[80]={0};
    int t=0, i=0; 
    double count;
    while((ch=getc(in)) != '=')  /*Строку из файла в массив*/
    {
        d[i]=ch;
        ++i;
    }
i=0;
while(d[i]!=0)  /*Сам алгоритм*/
{
top_of_switch: 
switch(d[i]) 
    {
    
    case '(': 
        {push_c(d[i]); continue;}    
    case ')': 
        { 
            if(stack_z[tos_z-1]=='(')
            {
                pop_z(); continue; 
            }
            else 
            { 
                do_op(); 
                goto top_of_switch; 
            }   
        }
 
    case '+': case '-':
      switch(stack_z[tos_z-1]) 
      {
      case '\0': case '(': push_z(d[i]); continue;
      case '+'   : case '-': do_op(); push_z(d[i]); continue;
      default    :  do_op(); goto top_of_switch;
      }
 
    case '*':
      switch(stack_z[tos_z-1]) 
      {
      case '*': {do_op(); push_z(d[i]); continue;}
      case '^': {do_op(); goto top_of_switch; continue;}
      default : {push_z(d[i]); continue;} 
      }
 
    case '^': push_z(d[i]); continue;
    default :
      t = 0;
      do {number[t++] = d[i]; i++;} while (isdigit(d[i]));
      number[t] = '\0';  ungetc(ch,in);
      push_c(atof(number)); 
      i++;
    }
    }
    fcloseall();
    cout<<"Vichisleno!\n";
    for (int j=0;j<3;j++)
    {
        count=stack_c[j];
        cout<<count<<" ";
    }
    cout<<endl;
    char c;
    for ( j=0;j<3;j++)
    {
        c=stack_z[j];
        cout<<c<<" ";
    }
    cout<<endl;
    return 0;
}
 
void do_op ()
{
    double op1=pop_c();
    double op2=pop_c();
    char znak=pop_z();
    double res;
    switch (znak)
    {
    case '+': res=op1+op2; break;
    case '-': res=op1-op2; break;
    case '*': res=op1*op2; break;
    case '^': res=pow(op1,op2);
    }
    cout<<res<<endl;
    push_c(res);
}
Не работает, не могу найти ошибку, а срочно нужно. Помогите найти где перемудрил((((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru