Другие языки программирования и технологии
Pascal. Почему выдает ошибку? Помогите отладить
program spisok; uses crt; type uk = ^zapis; zapis = record gr: string[10]; next: uk; end; var beg: uk; menu: byte; temp: string[10]; procedure init; begin beg := nil; end; procedure add(var beg: uk); var p, p1: uk; begin if beg = nil then begin writeln('vvedite v pust'); readln(temp); new(beg); beg^.gr := temp; beg^.next := nil; end else begin writeln('vvedite v pol'); readln(temp); new(p); if temp < beg^.gr then begin p^.gr := temp; p^.next := beg; beg^.next := nil; beg := p; end; end else begin writeln('vvedite v ser'); readln(temp); new(p1); p := beg; while (p <> nil) and (p^.next^.gr < temp) do begin p := p^.next; p1^.inf := temp; p1^.next := p^.next; p^.next := p1; end; end; end; procedure print; var p: uk; begin if beg = nil then writeln('Список пуст') else begin p := beg; write('Список групп: '); while p <> nil do begin write('- ', p^.gr, ' -'); p := p^.next; end; end; end; begin init; repeat clrscr; writeln('Введите 1 для добавления группы'); writeln('Введите 2 для просмотра списка групп'); writeln('Введите 4 для выхода'); readln(menu); case menu of 1: add(beg); 2: print; end; readkey; until menu = 4; end. Думаю суть программы обьяснять не надо, всё и так понятно. Выдает ошибку что не хватает точки с запятой перед else... но перед else её и быть не может, в чем проблема въехать не могу... Жду ответов.
program spisok;
uses
crt;
type
uk = ^zapis;
zapis = record
gr: string[10];
next: uk;
end;
var
beg: uk;
menu: byte;
temp: string[10];
procedure init;
begin
beg := nil;
end;
procedure add(var beg: uk);
var
p, p1: uk;
begin
if beg = nil then
begin
writeln('vvedite v pust');
readln(temp);
new(beg);
beg^.gr := temp;
beg^.next := nil;
end
else
begin
writeln('vvedite v pol');
readln(temp);
new(p);
if temp < beg^.gr then
begin
p^.gr := temp;
p^.next := beg;
beg^.next := nil;
beg := p;
end
else
begin
writeln('vvedite v ser');
readln(temp);
new(p1);
p := beg;
while (p <> nil) and (p^.next^.gr < temp) do
begin
p := p^.next;
p1^.inf := temp;
p1^.next := p^.next;
p^.next := p1;
end;
end;
end;
procedure print;
var
p: uk;
begin
if beg = nil then writeln('Список пуст') else begin
p := beg;
write('Список групп: ');
while p <> nil do
begin
write('- ', p^.gr, ' -');
p := p^.next;
end;
end;
end;
begin
init;
repeat
clrscr;
writeln('Введите 1 для добавления группы');
writeln('Введите 2 для просмотра списка групп');
writeln('Введите 4 для выхода');
readln(menu);
case menu of
1: add(beg);
2: print;
end;
readkey;
until menu = 4;
end.
вот так, (у тебя else не относился к if, сейчас относится ко второму if) теперь у тебя inf не описан в p1^.inf := temp; и еще куча ошибок) )
жаль форматирование текста пропадает. форматировать постфактум не занятие не очень =\
uses
crt;
type
uk = ^zapis;
zapis = record
gr: string[10];
next: uk;
end;
var
beg: uk;
menu: byte;
temp: string[10];
procedure init;
begin
beg := nil;
end;
procedure add(var beg: uk);
var
p, p1: uk;
begin
if beg = nil then
begin
writeln('vvedite v pust');
readln(temp);
new(beg);
beg^.gr := temp;
beg^.next := nil;
end
else
begin
writeln('vvedite v pol');
readln(temp);
new(p);
if temp < beg^.gr then
begin
p^.gr := temp;
p^.next := beg;
beg^.next := nil;
beg := p;
end
else
begin
writeln('vvedite v ser');
readln(temp);
new(p1);
p := beg;
while (p <> nil) and (p^.next^.gr < temp) do
begin
p := p^.next;
p1^.inf := temp;
p1^.next := p^.next;
p^.next := p1;
end;
end;
end;
procedure print;
var
p: uk;
begin
if beg = nil then writeln('Список пуст') else begin
p := beg;
write('Список групп: ');
while p <> nil do
begin
write('- ', p^.gr, ' -');
p := p^.next;
end;
end;
end;
begin
init;
repeat
clrscr;
writeln('Введите 1 для добавления группы');
writeln('Введите 2 для просмотра списка групп');
writeln('Введите 4 для выхода');
readln(menu);
case menu of
1: add(beg);
2: print;
end;
readkey;
until menu = 4;
end.
вот так, (у тебя else не относился к if, сейчас относится ко второму if) теперь у тебя inf не описан в p1^.inf := temp; и еще куча ошибок) )
жаль форматирование текста пропадает. форматировать постфактум не занятие не очень =\
Alexander Windermut
Спасибо, не хватало в вашем коде 1 энда :) и то место в процедурке добавления, которое должно добавлять по идее элемент между другими элементами, не рабочий совершенно. Но зато теперь ясно в чем была проблема, был бы признателен, если вы доработаете немного код :)
Курманбек Токтоев
Нет уж, трудитесь сами =)
поставь точку с запятой где просит компилятор и отпишись о результатах
Alexander Windermut
в том то и дело, что он просит прям перед else, а если принебречь тем, что перед else она не ставится и поставить , то компиллятор выдает ошибку типа "ожидался оператор" и так далее до бесконечности..
то же самое было, пересмотрел заного все
Alexander Windermut
В смысле?
Похожие вопросы
- с++, Программа выдает ошибку! ! Помогите знающие люди!!
- Почему PASCAL выдает ошибку?
- FreePascal. Выдает 201 ошибку. Помогите.
- 3d max выдаёт ошибку...
- Синий экран смерти выдает ошибку 0х0000008е
- Комп при включении выдаёт ошибку . Что то за ошибка и как её исправить _посмотрите пож_ста скрин .
- Почистил комп от пыли и теперь выдаёт ошибку....
- Код c++ выдает ошибку
- При введении программы на Pascal ABC выдается ошибка "нельзя вводить данные типа "массив", массивы вводятся поэлементно
- C++ как обратиться к элементу находящемуся в privatе? компилятор выдает ошибку