IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Симметричный список, Помогите исправить программу
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 12
Пол: Мужской

Репутация: -  0  +


Определить, является ли текст симметричным во входящем файле (за ним идет точка) с использованием списков.

В FAQе нашел файлик, где реализованы процедуры обработки списков, взял создание, печать, формирование списка в обратной последовательности. Затем поэлементно сравниваю два списка, а мне всегда выдается ответ Не симметричны и на экране при выводе пред первым элементом отображается какой то пробел, и он же потом отображается после последнего в обратном списке. Наверное из за этого и ответ не симметричность. Подскажите, где ошибка

program Project1;

{$APPTYPE CONSOLE}
Type
TElem = string; {Òèï èíôîðìàöèîííîé ÷àñòè}

TList = ^TNode; {Ïðåäñòàâëåíèå ñïèñêà }
TNode = record {Çâåíî ñïèñêà}
Info: TElem; {Èíôîðìàöèîííàÿ ÷àñòü}
Next: TList {Ñëåäóþùèé ýëåìåíò ñïèñêà}
end;
var spis,spis2:Tlist;
st:string;
flag:boolean;
Procedure ZListInit(var L: TList);
var
N: TList; {çàãëàâíûé ýëåìåíò}
Begin
new(N);
N^.Next:=nil;
L:=N
End;

procedure ZListAddLast(L: TList; E: TElem);
begin
{ ïîèñê ïîñëåäíåãî ýëåìåíòà ñïèñêà }
while L^.Next<>nil do L := L^.Next;
{ äîáàâëåíèå à ñïèñîê íîâîãî çâåíà }
new(L^.Next );
L:=L^.Next;
L^.Info:=E;
L^.Next:=nil
end;

procedure BListInvert(var L: TList);
var
H: TList; { âñïîìîãàòåëüíûé óêàçàòåëü }
P: TList; { óêàçàòåëü íà îáðàáîòàííûé ýëåìåíò ñïèñêà }
begin
P := nil;
while L<>nil do
begin
{( çàïîìèíàåì óêàçàòåëü íà ñëåäóþùèé )}
H := L^.Next;
{( òåïåðü ñëåäóþùèé çà òåêóùèì áóäåò çâåíî Ð )}
L^.Next := P;
{( òåêóùèé ñòàíîâèòñÿ ïðåäûäóùèì )}
{( äëÿ ñëåäóþùåãî øàãà )}
P := L;
{( ïåðåèåùàåèñÿ ê ñëåäóþùåèó ýëåìåíòó ñïèñêà )}
L:=H
end;
L :=P { ñàìûé ïîñëåäíèé ñòàíîâèòñÿ ïåðâûì }
end;
{ Ñïèñîê ñ çàãëàâíûì çâåíîè }
procedure ZListInvert (L: TList);
begin
BListInvert ( L^.Next )
end;

procedure BListPrint(L: TList );
begin
write('<');
while L <> nil DO
begin
write( L^.Info );
If L^.Next <> nil then write(' ');
L := L^.Next
end;
writeln('>')
end;
procedure ZListPrint(L: TList);
begin
BListPrint(L^.Next )
end;


Begin
ZListInit(spis);
Writeln('vvedite slova v konze .');
readln(st);
While st<>'.' do
begin
ZListAddLast(spis, st);
Readln(st);
end;
spis2:=spis;
BListPrint(spis);
writeln;
BListInvert(spis2);
BListPrint(spis2);
flag:=true;
while spis <> nil DO
begin if spis^.info<>spis2^.info then flag:=false;
spis := spis^.Next; spis2 := spis2^.Next;end;
if flag then Writeln('Simmetrichniy') Else Writeln('Ne Simmetrichniy');
readln;
End.


Пытался найти ошибку сам, но так и не пойму, откуда берется пробел перед элементами

Сообщение отредактировано: yuivanenko -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.04.2024 5:45
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name