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

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

Войти
Регистрация
Восстановить пароль
 
kondusov
2 / 2 / 0
Регистрация: 01.06.2013
Сообщений: 153
#1

Не могу найти ошибку в коде(постфиксная запись инфиксного выражения) - C++

08.11.2013, 12:31. Просмотров 281. Ответов 0
Метки нет (Все метки)

Использую цифры от 1 до 9,Ю пишу для простеньких выражний . Всё отлично работает когда выражение без скобок. Когда ввожу выражение со скобками - он мне даже ответ не выводит ответ(критически закрывается локальный загрузчик виндовс). Что не так? В переменной kol храню колво данных в стеке








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
#include <iostream>
#include <string>
 using namespace std;
struct stek
{
    char d;
    struct stek *next; // указатель на следующий элемент списка (стека)
};
 
 
void push(stek* &next, int d)
{
    stek *pv = new stek;      // объявляем новую динамическую переменную типа stek
    pv->d = d;                // записываем  значение, которое помещается в стек
    pv->next = next;          // связываем новый элемент стека с предыдущим
    next = pv;                // новый элемент стека становится его вершиной
}
 
char pop(stek* &next)
{  
    char temp = next->d;     // извлекаем в переменную temp значение в вершине стека
    stek *pv = next;        // запоминаем указатель на вершину стека, чтобы затем
                            // освободить выделенную под него память
    next = next->next;      // вершиной становится предшествующий top элемент
    delete pv;              // освобождаем память, тем самым удалили вершину
    
    return temp;          // возвращаем значение, которое было в вершине
}
int kol;
int main()
{
    string s, otvet;
    stek*p=0;
 
 
getline(cin, s);
 
cout<<"\n vashe virazhenie v obi4noy zapisi :"<<s<<"\n";
for(int i=0;s[i]!='\0';i++)
    {
        if (s[i]>'0'  &&  s[i]<'10')
        otvet+=s[i];
            if (s[i]=='+' || s[i]=='-' ||s[i]=='*' || s[i]=='/'){ 
            push (p,s[i]);
            kol++;
        }
                if (s[i]=='(')
                {
                push(p,s[i]);
                kol++; 
                }
                    if(s[i]==')')
                    {
                    while (pop(p)!='(')
                        otvet+=pop(p);
                        
                    }
 
 
 
}
while(pop(p)!='(')
    otvet+=pop(p);
cout<<"POSTFIKS ---       "<<otvet<<endl;
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2013, 12:31     Не могу найти ошибку в коде(постфиксная запись инфиксного выражения)
Посмотрите здесь:

Не могу разобраться в чём ошибка(инфиксная и постфиксная запись выражения) - C++
на вход для простоты подаю коротенько выражение меньше 10 символов цифры во входе тоже от 0 до 10 при выводе строки otvet ничег оне...

Перевод инфиксного выражения в постфиксное (обратная польская запись) - C++
Всем привет! Надо с помощью стека на динамическом массиве реализовать перевод инфиксного выражения в постфиксное. (обратная польская...

Не могу найти ошибку в коде - C++
Привет всем. У меня не получается построить решение. Вот код. #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;clocale&gt; using...

Не могу найти ошибку в коде - C++
Здравствуйте еще раз! У меня возникла проблема: В написанном мною коде какая то ошибка, которую ни я, ни компилятор, не может выявить. ...

Не могу найти ошибку в коде - C++
Задание такое: в текстовом файле находятся данные про радиусы основ и высот 15 конусов. Нужно записать в другой файл таблицу, которая...

Не могу найти ошибку в коде - C++
Доброго времени суток. Не могу найти ошибку в коде. Задача: Периодическая функция F(x) определена на всей числовой прямой и имеет период...

Не могу найти ошибку в коде :( - C++
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; void main () { clrscr(); float eps=0.0001; float x,S,ocr; scanf...

Не могу найти ошибку в коде - C++
Добрый вечер. Собственно, в универе дали задачу Программу я сделал, работает она верно при небольшой разнице начальной и конечной...

Не могу найти ошибку в коде - C++
Работаю со связанным списком. нужно удалить из него указанный элемент. Вот код функции удаления: void List::Delete(int Number){ ...

Не могу найти ошибку в коде - C++
Игра &quot;БлэкДжек&quot; Ошибка - &quot;Прекращена работ программы&quot;. С чем это связано - не могу понять... // Д/З 25 Блэк-Джек #include...

Не могу найти ошибку в коде - C++
class genetic { typedef bool* chr; typedef vector&lt;chr&gt; vals; vals population; bool...

Не могу найти ошибку в коде - C++
Не могу найти ошибку в коде. Помогите плиз. Нужно вычислить приближённое значение суммы этого бесконечного ряда. #include &lt;iostream&gt;...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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