|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.06.2013, 14:18 | #1 |
Форумчанин
Регистрация: 22.05.2013
Сообщений: 245
|
неправильная работа программы...
Дан список из n целых чисел a1,a2,...,an.Определить,является ли он симметричным.
Программа всегда выдает,что список не симметричен... Uses Crt; type Plist = ^TList; TList = record info: integer; pred,next : PList; end; Var Head : PList; n : integer; {создание двусвязного списка со сторожем} Procedure MakeList(Var head: PList; n:integer); var p,q:PList; i,k:integer; Begin {MakeList} new(head); head^.next:=nil; head^.pred:=nil; p:=head; writeln('введите элементы списка до 0'); read(k); while k<>0 do begin new(q); q^.info:=k; q^.pred:=p; q^.next:=nil; p^.next:=q; p:=q; inc(n); read(k); end; head^.pred:=p; writeln('количество элементов списка*: ',n); writeln; end;{MakeList} {вывод списка на экран**} Procedure PrintList(head : PList); Var p: PList; Begin {PrintList} writeln('данный список: '); p:=head^.next; while p<>nil do begin write(p^.info:4); p:=p^.next; end; writeln; end;{PrintList} {проверка симметрии списка*} Procedure SimList(head: PList; n:integer); Var p,q:PList; c:integer; Begin {SimList} writeln; writeln('проверяем симметрию:'); p:=head^.pred; q:=head^.next; while (p<>q) and (p^.next <>q) do begin write(p^.info:4); write(q^.info:4); { if p^.info=q^.info then inc(c); } p:=p^.pred; q:=q^.next; if p=q then inc(c); end; writeln; if c=(n div 2) then writeln('список симметричен') else writeln('список не симметричен*'); end;{SimList} Begin {program} ClrScr; MakeList(head,n); PrintList(head); SimList(head,n); readkey; end.{program} |
05.06.2013, 15:18 | #2 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Код:
Код:
|
05.06.2013, 15:41 | #3 |
Форумчанин
Регистрация: 22.05.2013
Сообщений: 245
|
Так?
Uses Crt; type Plist = ^TList; TList = record info: integer; pred,next : PList; end; Var Head : PList; n : integer; Procedure MakeList(Var head: PList; Var n:integer); var p,q:PList; i,k:integer; Begin {MakeList} new(head); head^.next:=nil; head^.pred:=nil; p:=head; writeln('введите элементы списка до 0'); read(k); while k<>0 do begin new(q); q^.info:=k; q^.pred:=p; q^.next:=nil; p^.next:=q; p:=q; read(k); end; head^.pred:=p; writeln('количество элементов*: ',n); writeln; end;{MakeList} Procedure PrintList(head : PList); Var p: PList; Begin {PrintList} writeln('данный список: '); p:=head^.next; while p<>nil do begin write(p^.info:4); p:=p^.next; end; writeln; end;{PrintList} Procedure SimList(head: PList; n:integer); Var p,q:PList; c:integer; Begin {SimList} writeln; writeln('проверяем симметрию:'); p:=head^.pred; q:=head^.next; c:=0; while (p<>q) and (p^.next <>q) do begin write(p^.info:4); write(q^.info:4); p:=p^.pred; q:=q^.next; if p^.info=q^.info then inc(c); end; writeln; if c=(n div 2) then writeln('симметричен') else writeln('не симметричен*'); end; Begin ClrScr; writeln('введите количество элементов'); readln(n); MakeList(head,n); PrintList(head); SimList(head,n); readkey; end. |
05.06.2013, 16:04 | #4 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
|
05.06.2013, 16:20 | #5 |
Форумчанин
Регистрация: 22.05.2013
Сообщений: 245
|
убрала переменную i и строчку writeln('количество элементов:',n)...
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
неправильная работа keybd_event | chertovich | Win Api | 3 | 07.01.2012 14:52 |
неправильная работа программы на delphi | руслан1993 | Помощь студентам | 0 | 28.05.2011 12:13 |
ADOTable неправильная работа. | Spaun | Помощь студентам | 1 | 23.06.2010 10:12 |
неправильная работа программки. | Rafff | Общие вопросы C/C++ | 6 | 05.04.2010 15:16 |
Неправильная работа switch в while | konstantinopol | Общие вопросы C/C++ | 3 | 24.01.2009 03:51 |