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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Liv-pooL
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 142
#1

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

17.04.2011, 10:21. Просмотров 1792. Ответов 1
Метки нет (Все метки)

Ребята, у кого-нибудь есть Алгоритм Бауэра Замельзона реальзованый на с++?
Нужен срочно(
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2011, 10:21     Алгоритм Бауэра Замельзона
Посмотрите здесь:

Волновой алгоритм (алгоритм Ли) - C++
Здравствуйте! У кого-нибудь есть реализованный волновой алгоритм (алгоритм Ли) ? Дело в том, что я игрушку захотел написать (что-то...

Вычислить выражение, используя Алгоритм Бауэра и Замельзона - Visual Basic .NET
помогите написать программу, которая принимает строку - арифметическое выражение и вычисляет его результат по алгоритму Бауэра и...

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки ) - C++
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void lab () { int s1 = 0; int s2 =...

Волновой алгоритм поиска (Алгоритм A* / Алгоритм А стар) - C++
Хочу разработать алгоритм для решения головоломки с подвижными дисками (перестановочная головоломка). Определение. Перестано́вочные...

Линейный алгоритм, Алгоритм с ветвлениями, Циклический алгоритм Линейный алгоритм - Pascal
Линейный алгоритм, Алгоритм с ветвлениями, Циклический алгоритм Линейный алгоритм 1. Объясни, что будет напечатано программой Program...

Построить алгоритм ДО и алгоритм ПОКА для вычислений значения функции на отрезке [a,b] с шагом h. - Free Pascal
Построить алгоритм ДО и алгоритм ПОКА для вычислений значения функции на отрезке с шагом h. Написать программу: F=3+tgx Мой...

Составить алгоритм-вычисление квадрата суммы двух чисел и алгоритм для вычисления функции - Pascal ABC
Здравствуйте!Мне нужно все с самого начала и точно,помогите пожалуйста! 1.составить алгоритм-вычисление квадрата суммы двух чисел.

Построить алгоритм ДО и алгоритм ПОКА дя вычислений значения функции на отрезке [а,b] с шагом h. Написать программу - Pascal
F=3+tg x

Алгоритм удаления невидимых линий и алгоритм закраски Гуро - Графика и игры
Как применить алгоритм удаления невидимых линий и алгоритм закраски Гуро? в данном коде, заранее спасибо за помощь #include...

Алгоритм поиска образа в строке. Алгоритм Бойера-Мура - Python
# Лабораторная работа № 1 # Поиск образа в строке def forming_d(pattern): """ Формируем массив d.""" d = new_p...

Написать алгоритм по блок схеме (Алгоритм метода Ньютона) - Pascal
Прошу помогите, очень срочно! Сижу на экзамене!


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Liv-pooL
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 142
18.04.2011, 11:55  [ТС]     Алгоритм Бауэра Замельзона #2
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 ничего не делает, помогите исправить, не могу найти ошибку.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru