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

Алгоритм Бауэра и Замельзона. Не могу найти ошибку. - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дружественные функции http://www.cyberforum.ru/cpp-beginners/thread278552.html
Напишите программу, вычеркивающую из данного слова все буквы «а» (так, чтобы, например, из слова «заноза» получилось «зноз»), через дружественные функции
C++ Разработать программу работы с бинарным деревом Разработать программу работы с бинарным деревом. Программа должна содержать следующие процедуры, вызываемые из меню: - построение пустого дерева; - вставка поддерева в указанное место; - удаление указанного элемента; - просмотр дерева в следующем порядке: узел, левая ветвь, правая ветвь http://www.cyberforum.ru/cpp-beginners/thread278550.html
Имеется список сотрудников, в котором записаны: фамилия сотрудника, год рождения, месяц и день рождения C++
Имеется список сотрудников, в котором записаны: фамилия сотрудника, год рождения, месяц и день рождения (входной файл firma.txt). Определить самого молодого и самого старого сотрудника. Определить, кто из сотрудников родился зимой. Результат записать в файл. Помогите пожалуйста, заранее благодарю
Скорость работы программы C++
Здравствуйте, не подскажите примерами, как можно посчитать скорость работы части программы, например: Sum= a-b; Узнать за сколько времени выполнилась эта команда. Необходимо точное показание времени, те например в тысячных секунды или миллионных.
C++ важно шаблон http://www.cyberforum.ru/cpp-beginners/thread278532.html
Написать шаблон для сортировки столбцов прямоугольной матрицы по возрастанию суммы элементов в каждом столбце. кажется заполнения массива сделано, а как теперь просортуваты и использовать шаблон? #include <iostream.h> void trans_pointer() { int n,m,i,j;
C++ Двумерный массив Помогите доделать задачу((( Задача состоит из нескольких моментов: 1) Задан двумерный массив U. Значения кол-ва строк и столбцов массива должны подсчитываться с учетом расстояния. Полученный массив должен выводиться на экран. 2) Значения в массив задаются: • к примеру, как показано на рисунке значение в массиве при X = 0, а Y =10 будет = 0, затем при изменяющемся X и постоянном Y... подробнее

Показать сообщение отдельно
Дима-Дима
1 / 1 / 0
Регистрация: 09.12.2010
Сообщений: 63
18.04.2011, 11:57     Алгоритм Бауэра и Замельзона. Не могу найти ошибку.
ActionScript 3
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
#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 ()
{
    if (tos_z==0) 
    {cout<<"Pusto"; return 0;}
    else tos_z--; 
    return stack_z[tos_z];
}
 
double pop_c ()
{
    if (tos_c==0) 
    {cout<<"Pusto"; return 0;}
    else tos_c--; 
    return stack_c[tos_c];
}
 
void do_op (); 
 
int main()      
{
    FILE *in; 
    in=fopen("expr_valin.txt", "r");
    char ch;
    int i=0; 
    double count;
    while((ch=getc(in)) != '=') 
    {
top_of_switch: 
 
    switch(ch) 
    {
    case '(': 
        {push_c(ch); 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(ch); continue;
      case '+'   : case '-': do_op(); push_z(ch); continue;
      default    :  do_op(); goto top_of_switch; /* операторы '*', '/' */
      }
 
    case '*':
      switch(stack_z[tos_z-1]) 
      {
      case '*': {do_op(); push_z(ch); continue;}
      case '/': {do_op(); goto top_of_switch; continue;}
      default : {push_z(ch); continue;} /* пустой стек, '(' и операторы '+', '-' */
      }
 
    case '^': push_z(ch); continue;/* при любом содержимом вершины стека */
    default :/* если цифровой символ, то считываем  число и заносим в стек */
      i = 0;
      do number[i++] = ch; while (isdigit(ch=getc(in)));
      number[i] = '\0';  ungetc(ch,in);
      push_c(atof(number)); 
    }
    }
    fcloseall();
    cout<<"Vichisleno!\n";
    for (int j=0;j<3;j++)
    {
        count=stack_c[j];
        cout<<count<<" ";
    }
    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=op1/op2;
    }
    cout<<res<<endl;
    push_c(res);
}
Реализовал, в стек заносит, а ответ не вычисляе, ф-ия do_op ничего не делает, помогите исправить, не могу найти ошибку.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru