Ошибка 201, как исправить ? - Turbo Pascal
Формулировка задачи:
подскажите пожалуйста как ее исправить
ошибку выдает, когда доходят до процедура mas
когда я хочу перенести элементы очереди в массив
Листинг программы
- type list=^elem;
- elem=record
- info:integer;
- next: list;
- end;
- {ᮧ¤*Ґ¬ ®зҐаҐ¤м}
- procedure createlist(var l:list); {sozdanie ocheredi}
- var x,n:integer; p,q:list;
- begin
- writeln('бЄ®«мЄ® зЁбҐ«?'); readln(n);
- writeln('vvedite chizla'); readln(x); {vvodim chislo}
- if x<>0 then begin {yslowie}
- new(l); {noway ycheyka}
- l^.info:=x; {prisvaevaem ycheyke chislo}
- p:=l; {p prisvoit l}
- p^.next:=nil; {cled ycheyka prisvoit' nil }
- readln(x); end; {vvodim chislo}
- while x<>0 do begin {poka }
- new(q);
- q^.info:=x;
- p^.next:=q;
- p:=q;
- p^.next:=nil;
- readln(x);
- end; end;
- {б㬬* ¤Ґ«ЁвҐ«Ґ©}
- function sumd( p:integer):integer; {summa deliteley}
- var x,i,k:integer;
- begin
- k:=0;
- for i:=2 to x div 2 do {ўбҐ ¤Ґ«ЁвҐ«Ё зЁб«*,Єа®¬Ґ б*¬®Ј® зЁб«*}
- if (x mod i = 0) then {**室Ё¬ б㬬㠤Ґ«ЁвҐ«Ґ© зЁб«*}
- k:=k+i;
- sumd:=k;
- end;
- {¤®Ў*ў«Ґ*ЁҐ *®ў®Ј® н«Ґ¬Ґ*в* ў ®зҐаҐ¤Ё}
- procedure vnachalo(var l:list; x:integer ); {dobavlenie elem}
- var q:list; p:list;
- begin
- l:=p;
- if l<>nil then begin
- while (l<>nil) and (l^.next<>nil) do
- l:=l^.next; {⥯Ґам а Є®*Ґж ®зҐаҐ¤Ё}
- new(q); {ᮧ¤*Ґ¬ п祩Єг}
- q^.info:=x;
- q^.next:=nil;
- p:=q;
- end
- else
- new(q);
- q^.info:=x;
- q^.next:=nil;
- end;
- {Ї®Є*§}
- procedure show(l:list); {Ї®Є*§ зЁбҐ«}
- var p:list;
- begin
- p:=l;
- write('<');
- while p<> nil do
- begin
- write(p^.info :6);
- p:=p^.next;
- end;
- write('>'); readln;
- end;
- {§**ҐбҐ*ЁҐ н«Ґ¬Ґ*в®ў ў ¬*ббЁў}
- procedure mas(var p:list);
- var a:array[1..5] of integer;
- i:integer; l:list;
- begin
- while p<>nil do begin
- if p^.info<>0 then begin
- a[i]:=p^.info;
- end;
- writeln('ў ¬*ббЁўҐ:=');
- write(a[i]);
- end; end;
- {®б*®ў**п Їа®Ја*¬¬* }
- VAR p,s1,s2,s3,l:list;
- i,j:integer;
- a:array[1..5] of integer;
- BEGIN
- s1:=nil;
- s2:=nil;
- createlist(s3);
- mas(s3);
- for i:=0 to 2 do begin
- if (sumd(a[i]) = a[i+1]) and (sumd(a[i+1]) = a[i]) then begin
- vnachalo(s1,a[i]);
- vnachalo(s2,a[i+1]);
- end;end; writeln(' s3');
- show(s3); writeln('s1'); show(s1);
- writeln('s2'); show(s2); readln; end.
Решение задачи: «Ошибка 201, как исправить ?»
textual
Листинг программы
- procedure mas(p: list; var a: TArray; var n: integer);
- begin
- n := 0;
- while p <> nil do
- begin
- if p^.info <> 0 then
- begin
- Inc(n);
- a[n] := p^.info;
- end;
- p := p^.Next;
- end;
- end;
Объяснение кода листинга программы
- В процедуре mas объявлены три переменные: p (тип list), a (тип TArray) и n (тип integer).
- Переменная n инициализируется значением 0.
- Затем происходит цикл while, который выполняется до тех пор, пока p не станет равным нулю.
- В цикле проверяется значение поля info у каждого элемента списка p.
- Если значение поля info равно 0, то увеличивается значение переменной n на единицу, и элемент с этим значением добавляется в массив a.
- После проверки всех элементов списка, переменная p обновляется, чтобы указать на следующий элемент в списке.
- Цикл while повторяется до тех пор, пока все элементы списка не будут обработаны.
- По завершении процедуры, переменная n содержит количество элементов, добавленных в массив a.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д