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

Построить распознаватель языка с помощью стека - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Страуструп, и траблы в среде программирования http://www.cyberforum.ru/cpp-beginners/thread649642.html
Всем добрых суток! Я начал изучение где-то 3 дня назад, 3 дня от компьютера не отхожу ,читаю, делаю записи в тетради. Мне это очень интересно, у меня много энтузиазма, поэтому не могу не задать тупой вопрос, на форуме мастеров. Начал читать - "C++ для чайников" - сразу понял ,что не мое, и старая литература. , потом "Дейтел - Как программировать на C++" - очень понравилось, 2 дня читал,...
C++ Что такое компилятор? и т.д Всем привет, может быть пост не в тему! Но очень хотелось бы знать, что такое компилятор, и как он работает, подробней узнать. Спасибо за ответ P.S я новичок :) http://www.cyberforum.ru/cpp-beginners/thread649634.html
Вычислить значение выражения, найти сумму ряда C++
ребята! до завтра решите задачу. пожалуйста. я ноль в программировании а)x = arccos(\sqrt{\beta }y - a) б)S = 4 + \sum_{i=1}^{50}{i}^{2} Добавлено через 2 часа 13 минут с этой тоже помогите пожалуйста
Составить алгоритм определения последовательности номеров удаляемых спортсменов C++
ребята! до завтра ришите задачу. пожалуйста. я ноль в программировании по кругу стоят N спортсменов с номерами от 1 до N. начиная с кокого-то человека,по кругу удаляется каждый k-ый спортсмен. после каждого удаления круг смыкается. составить алгоритм определения последовательности номеров удаляемых спортсменов.
C++ По введенному значению аргумента вычислить значение функции, заданной в виде графика http://www.cyberforum.ru/cpp-beginners/thread649609.html
Задание 1. Написать программу, которая по введенному значению аргумента вычисляет значение функции, заданной в виде графика. Параметр R вводится с клавиатуры. Задание 2. Вычислить и вывести на экран в виде таблицы значения функции, заданной графически ( см. задание 1 ), на интервале от xнач до xкон с шагом dx. Интервал и шаг задать таким образом, чтобы проверить все ветви программы. Таблицу...
C++ Что такое globalFix? Задача: ввести с клавиатуры строку символов, удалить из нее все гласные буквы, используя функции. Ниже приведено решение (не мое, взял у доброго человека), но мой компилятор (DevC++) спотыкается на строке if (i == (id - globalFix)) { , сообщение компилятора: `globalFix' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it... подробнее

Показать сообщение отдельно
sTARKj
0 / 0 / 1
Регистрация: 10.09.2012
Сообщений: 40
16.09.2012, 09:25  [ТС]     Построить распознаватель языка с помощью стека
Вот листинг программы, которая проверяет являетсья ли введенное выражение выражением в префиксной форме и соответственно выдает сообщение о том являеться или нет.
Вот например пишем туда ++ABC или +$AB знак доллара, это корень как будто...выраэение считывается с конца строки и если там символ, он помещается в стек, если дальше ещё символ тоже в стек, если встречается $ просто ничего не делаем переходим к следующему символу. Если встречается +-* или / то вытаскиваются два символа из стека и вместо них один неважно какой, ну или просто вытаскивается один, вот если в конце когда все выражение пройдено с конца до начала, в стеке остаётся один символ то выражение префиксное, здесь стек сделан на основе структур. Может кто делал или есть листинг на основе классов или ещё как нибудь реализованный по другому стек?

делал в билдере 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
#pragma hdrstop
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<iomanip.h>
 
struct prf
{char sym[2];
prf *p;
};
 
prf *first(char *sym)
{prf *temp=new prf;
strcpy(temp->sym,sym);
temp->p=NULL;
return temp;
}
 
void vstek(prf **stek, char *sym)
{prf *temp=new prf;
strcpy(temp->sym,sym);
temp->p=*stek;
*stek=temp;
}
 
char del(prf **stek)
{//char som[1];
//strcpy(som,(*stek)->sym);
prf *temp=*stek;
*stek=(*stek)->p;
delete temp;
 
}
 
void vivod(prf **stek)
{prf *temp=*stek;
while(temp)
{cout<<temp->sym<<"   ";
//cout<<endl;
temp=temp->p;}
}
 
int isprf(prf **stek)
{prf *temp=*stek;
if (temp->p==NULL)
return 1;
else
return 0;
}
 
#pragma argsused
int main(int argc, char* argv[])
{char sim[2];
char str[20]; int i=0;
cout<<"Vveite stroku: "<<endl;
cin>>str;
while(str[i]!=NULL)
{i++;}
if (isalpha(str[0])&&(str[1]=NULL))
cout<<"-------FORMA PREFIXNAJA------"<<endl;
if (isalpha(str[i-1]))
{sim[0]=str[i-1];
prf *elem=first(sim);
for(int j=i-2; j>=0; j--)
{if (isalpha(str[j]))
{sim[0]=str[j];
vstek(&elem,sim);}
else
if ((str[j]=='+')||(str[j]=='-')||(str[j]=='/')||(str[j]=='*'))
del(&elem);}
vivod(&elem);
if (isprf(&elem)==1)
cout<<endl<<"-------FORMA PREFIXNAJA------"<<endl;
else
cout<<"-------FORMA NE PREFIXNAJA------"<<endl;}
else
cout<<"-------FORMA NE PREFIXNAJA------"<<endl;
getch();
        return 0;
}
 
Текущее время: 20:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru