2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Паскаль
Сообщение07.12.2008, 21:03 


26/11/08
5
Город Киров
Помогите найти ошибку. Программа написана,но идет не во всех случаях...
Program ex1;
Type stack=^el;
el=record
data:integer;
next:stack;
end;

var a:String;
f:Boolean;
i:Integer;

Procedure POP(Var s:stack);
Var t:stack;
Begin
t:=s^.next;

s:=t;
end;

Procedure PUSH(Var s:stack; c:integer);
Var t:stack;
Begin
New(t);
t^.data:=c;
if s<>nil then t^.next:=s;

s:=t;
end;

Procedure MAIN(a:string);
Var l:stack;
Begin
new(l);
i:=1;
While (i<=length(a)) and f Do
Begin
If a[i] in ['(','{','['] Then Push(l,i);
if a[i] in [')','}',']'] then
If Ord(l^.data)-Ord(a[i])<2 Then Pop(l)
else f:=false;

inc(i);
end;

end;

Begin
writeln(введите строку); f:=true;
readln(a);
IF LENGTH(a) mod 2=0 then
Begin

If a<>'' Then
Begin
Main(a);
If f Then Writeln (правильно)
Else Writeln (не правильно);
end
Else Writeln(не правильно);
end
else Writeln (не правильно);
Readln;
end.

 Профиль  
                  
 
 
Сообщение08.12.2008, 23:47 


27/11/05
183
Северодонецк
И все должны фантазировать, что должна делать эта задача? Если не известна постановка задачи, какой смысл рассматривать ее решение?

 Профиль  
                  
 
 
Сообщение09.12.2008, 13:09 
Заслуженный участник
Аватара пользователя


01/08/06
3131
Уфа
Насколько я понимаю, программа должна определять правильность расстановки скобок?
Меня здесь смущает строчка
Код:
new(l);
(по-моему, вместо этого должно быть l := nil;)
и строчка
Код:
if s<>nil then t^.next:=s;
(в случае, когда s = nil, поле t^.next оказывается неинициализированным). Лучше просто
Код:
  t^.next := s;
(т.е. убрать if).
И, таки да, напишите, в каких случаях не идёт Ваша программа.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group