Ошибка в коде - Pascal (81068)
Формулировка задачи:
Здравствуйте. Помогите исправить ошибку в данном коде:
Type spisok=^s;
s=record
n:real;
next:spisok;
end;
var s1,s2,t,vs1,vs2,s3:spisok;
i,min,minvs,obm:integer;
sum:real;
begin
sum:=0;
write('Vvedite kolichestvo elementov n: ');
readln(min);
new(s1);
s1:=nil;
for i:=1 to min do
begin
write('Spisok[',i,']: ');
new(t);
readln(t^.n);
t^.next:=s1;
s1:=t;
end;
new(s2);
s2^.next:=nil;
s2^.n:=s1^.n;
while s1<>nil do
begin
sum:=sum+s1^.n;
new(t);
t^.n:=s1^.n;
t^.next:=s2;
s2:=t;
s1:=s1^.next;
end;
writeln;
while s2<>nil do
begin
write(s2^.n:4:1);
s2:=s2^.next;
end;
writeln;
writeln;
write('Summa=',sum:5:3);
end.Решение задачи: «Ошибка в коде»
textual
Листинг программы
type
spisok = ^s;
s = record
n: real;
next: spisok;
end;
var
sp, cur : spisok;
n, i: integer;
sum: real;
begin
write('Vvedite kolichestvo elementov n: '); readln(n);
New(sp); cur := sp;
for i := 1 to n do
begin
write('Spisok[', i, ']: '); readln(cur^.n);
if i < n then
begin
New(cur^.next);
cur := cur^.next;
end;
end;
cur^.next := nil;
Write('Список:');
sum := 0;
cur := sp;
while cur <> nil do
begin
Write(' ', cur^.n);
sum := sum + cur^.n;
cur := cur^.next;
end;
writeln;
write('Summa=', sum:5:3);
end.
Объяснение кода листинга программы
- Объявляются переменные типа
spisok,s,sp,cur,n,iиsum. - Пользователю предлагается ввести количество элементов в списке.
- Выделяется память под первый элемент списка.
- В цикле считывается информация о каждом элементе списка и сохраняется в соответствующем месте.
- Выделяется память под следующий элемент списка (если он есть).
- Записывается в список.
- Если элемент не последний, выделяется память под следующий элемент списка.
- Переход к следующему элементу списка.
- Окончание списка отмечается выходом из цикла.
- Записывается сумма элементов списка.
- Программа завершается.