Привет всем!! Дан динамический список. Нужно найти сумму пяти первых элементов. Подскажите почему сумма считается неправильно!!??
program Project1;
{$APPTYPE CONSOLE}
uses SysUtils;
type pspis=^spisok; spisok=record data:integer; next:pspis; end; Var i,n,a:integer; x,y,u:pspis; s:integer; begin { TODO -oUser -cConsole Main : Insert code here } s:=0; u:=nil; write('n=');readln(n); for i:=1 to n do begin new(Y); WRITE('a=');readln(a); y^.data:=a; y^.next:=nil; if u=nil then u:=y else x^.next:=y; x:=y; end; writeln('vvedennii spisok:'); y:=u; while y<>nil do begin writeln(y^.data); for i:=1 to n do 5 s:=s+y^.data; ----мне кажется что здесь моя ошибка!! y:=y^.next; end; writeln('сумма=',s); readln; end.
volvo
17.05.2007 22:37
writeln('vvedennii spisok:'); y:=u; { Сначала закончи выводить список... } while y<>nil do begin writeln(y^.data); y := y^.next; end; { ... а потом - будешь считать: } y := u; for i:=1 to n do begin s:=s+y^.data; y:=y^.next; end; writeln('сумма=',s);
forMator
17.05.2007 22:40
Спасибо!
forMator
23.05.2007 17:19
А как в динамическом списке подсчитать сумму элементов больших 1-го элемента? У меня не получается. Помогите пожалуйста.
Program project1; type pspis=^spisok; spisok=record data:nteger; next:pspis; end; Var s,k,i,n,a:integer; x,y,u:pspis; begin u:=nil; k:=0; s:=0; write('n='); readln(n); for i:=1 to n do begin new(y); write('a='); readln(a); y^.data:=a; y^.next:=nil; if u=nil then u:=y else x^.next:=y; x:=y; end; writeln('vvedennii spisok:'); y:=u; while y<>nil do begin writeln(y^.data); k:=k+1; if k=1 then a:=y^.data; if y^.data>a then s:=s+y^.data; y:=y^.next; end; writeln('s=',s); readln;
volvo
23.05.2007 17:24
Чего ж не получается? Все нормально считает...
forMator
23.05.2007 17:29
Ошибся немного... Значит, работает. Это невнимательность. Спасибо большое!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.