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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

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

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


Это две задачи? Или "2 в одном"?
По 2-й - FAQ. "Палиндромы."
По 1-й - Поиск.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(Ozzя @ 12.05.2010 15:04) *

Это две задачи? Или "2 в одном"?
По 2-й - FAQ. "Палиндромы."
По 1-й - Поиск.


Условие задачи второе, просто нужно сделать с динамическими переменными. Вот я и решил из файла сделать прямой список, потом по прямому списку сформировать обратный и сравнить. Есл есть какие нибудь другие предложения, с удовольствием рассмотрю
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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