Ошибка в коде - 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
. - Пользователю предлагается ввести количество элементов в списке.
- Выделяется память под первый элемент списка.
- В цикле считывается информация о каждом элементе списка и сохраняется в соответствующем месте.
- Выделяется память под следующий элемент списка (если он есть).
- Записывается в список.
- Если элемент не последний, выделяется память под следующий элемент списка.
- Переход к следующему элементу списка.
- Окончание списка отмечается выходом из цикла.
- Записывается сумма элементов списка.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д