Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 09.05.2015
Сообщений: 34
1

Используя стек, проверить правильность вложений операторных скобок (begin - end) в программе на Паскале

09.05.2015, 19:16. Показов 1838. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
В файле находится текст программы на Паскале. Используя стек, проверить правильность вложений операторных скобок (begin - end) в этой программе.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.05.2015, 19:16
Ответы с готовыми решениями:

Проверить правильность расстановки операторных скобок 'begin' и 'end'
Доброго времени суток )))) Помогите пожалуйста : проверка правильности расстановки операторных...

Дан массив строк. Напишите программу, проверяющую правильность вложения операторных скобок begin . end — каждому begin должен соответствовать end
Дан массив строк, представляющий собой фрагмент программы на языке Pascal. Напишите программу,...

В файле находится текст программы на Паскале. Используя стек, проверить правильность вложений операторных скобок (begin - end) в этой программе
В файле находится текст программы на Паскале. Используя стек, проверить правильность вложений...

Используя стек, проверить правильность вложений операторных скобок (begin/end)
В файле находится текст программы на pascal. используя стек проверить правильность вложений...

3
16 / 16 / 8
Регистрация: 25.04.2014
Сообщений: 68
09.05.2015, 21:23 2
Лучший ответ Сообщение было отмечено ildwine как решение

Решение

20 мин

Добавлено через 1 час 39 минут
Pascal
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
type stack = record
      data : array [0..100000] of char;
      size : longint;
end;
 
var
   Myst : stack;
   i : longint;
   fin, fout : text;
   tmp : char;
   line, row : longint;
   Flag : boolean;
 
procedure push(ch : char; var st : stack);
begin
 inc(st.size);
 st.data[st.size] := ch;
end;
 
function isempty(st : stack) : boolean;
begin
 if (st.size = 0) then
        isempty := true
 else
        isempty := false;
end;
 
procedure pop(var st : stack);
begin
        if(NOT isempty(st)) then begin
                st.data[st.size] := ' ';
                dec(st.size);
        end else
                writeln('Stack is empty!');
end;
 
procedure OpenFileIn(var f : text);
var
    NameF : string;
begin
  write('Введите название проверяемого файла');
  readln(NameF);
  assign(f, NameF);
  reset(f);
end;
 
procedure OpenFileOut(var f : text);
var
    NameF : string;
begin
 NameF := 'result.txt';
 writeln('Результат в файле: ',NameF);
 assign(f, NameF);
 rewrite(f);
end;
function compare(ch : char) : boolean;
begin
 if (ch = '(') or (ch = '[') or (ch = '{') then
    push(ch, Myst)
 else begin
    if(ch = ')') then
     if (Myst.data[Myst.size] = '(') then
       pop(Myst)
     else
      compare := false;
 
    if(ch = ']') then
     if (Myst.data[Myst.size] = '[') then
       pop(Myst)
     else
      compare := false;
 
    if(ch = '}') then
     if (Myst.data[Myst.size] = '{') then
       pop(Myst)
     else
      compare := false;
 end;
 
end;
BEGIN
 row := 1;
 line := 1;
 Flag := true;
 OpenFileIn(fin);
 while (NOT EOF(fin)) do begin
        while(NOT EOLn(fin)) do begin
                read(fin, tmp);
                Flag := compare(tmp);
                if (Flag = false) then begin
                  OpenFileOut(fout);
                  writeln(fout, 'Error: ', line, ' ', row);
                  close(fout);
                  exit();
                end;
                inc(row);
        end;
        readln(fin);
        row := 1;
        inc(line);
 end;
 OpenFileOut(fout);
 if (isempty(Myst)) then
        writeln(fout, 'No errors!')
 else
        writeln(fout, 'Not enough of closing brackets');
 Close(fout);
 Close(fin);
END.
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
09.05.2015, 23:41 3
antondasuk, вы проверяете обычные скобки, а имелось ввиду
Цитата Сообщение от Xuck1234 Посмотреть сообщение
операторных скобок (begin - end)
0
0 / 0 / 0
Регистрация: 09.05.2015
Сообщений: 34
10.05.2015, 12:43  [ТС] 4
спасибо большое
0
10.05.2015, 12:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.05.2015, 12:43
Помогаю со студенческими работами здесь

Используя стек проверить правильность вложений операторных скобок
в файле находится текст программы на c# . используя стек проверить правильность вложений...

Проверить файл программы на соответствие числа открывающих и закрывающих операторных скобок (begin и end)
Дан текстовый файл F,содержащий программа на языке паскаль.проверить эту программу на...

Дан текст. Проверить, имеется ли в нем баланс операторных скобок "begin .end"
Дан текст. Проверить, имеется ли в нем баланс операторных скобок "begin ...end"

Проверить парность блочных скобок begin-end
Привет,форумчане!помогите с задачкой,пожалуйста)) Напишите программу, которая во входной...

Стек. Проверить правильность расстановки скобок
Дан текст, в нём присутствует 3 вида скобок, проверить правильность расстановки скобок. Например...

Используя Стек, Определить Правильность Расстановки Скобок
С Клавиатуры Вводится Арифметическое Выражение С Использование Круглых, Квадратных И Фигурных...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru