Ошибка 201, как исправить ? - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

подскажите пожалуйста как ее исправить ошибку выдает, когда доходят до процедура mas когда я хочу перенести элементы очереди в массив
Листинг программы
  1. type list=^elem;
  2. elem=record
  3. info:integer;
  4. next: list;
  5. end;
  6. {ᮧ¤*Ґ¬ ®зҐаҐ¤м}
  7. procedure createlist(var l:list); {sozdanie ocheredi}
  8. var x,n:integer; p,q:list;
  9. begin
  10. writeln('бЄ®«мЄ® зЁбҐ«?'); readln(n);
  11. writeln('vvedite chizla'); readln(x); {vvodim chislo}
  12. if x<>0 then begin {yslowie}
  13. new(l); {noway ycheyka}
  14. l^.info:=x; {prisvaevaem ycheyke chislo}
  15. p:=l; {p prisvoit l}
  16. p^.next:=nil; {cled ycheyka prisvoit' nil }
  17. readln(x); end; {vvodim chislo}
  18. while x<>0 do begin {poka }
  19. new(q);
  20. q^.info:=x;
  21. p^.next:=q;
  22. p:=q;
  23. p^.next:=nil;
  24. readln(x);
  25. end; end;
  26. {б㬬* ¤Ґ«ЁвҐ«Ґ©}
  27. function sumd( p:integer):integer; {summa deliteley}
  28. var x,i,k:integer;
  29. begin
  30. k:=0;
  31. for i:=2 to x div 2 do {ўбҐ ¤Ґ«ЁвҐ«Ё зЁб«*,Єа®¬Ґ б*¬®Ј® зЁб«*}
  32. if (x mod i = 0) then {**室Ё¬ б㬬㠤Ґ«ЁвҐ«Ґ© зЁб«*}
  33. k:=k+i;
  34. sumd:=k;
  35. end;
  36. {¤®Ў*ў«Ґ*ЁҐ *®ў®Ј® н«Ґ¬Ґ*в* ў ®зҐаҐ¤Ё}
  37. procedure vnachalo(var l:list; x:integer ); {dobavlenie elem}
  38. var q:list; p:list;
  39. begin
  40. l:=p;
  41. if l<>nil then begin
  42. while (l<>nil) and (l^.next<>nil) do
  43. l:=l^.next; {⥯Ґам а Є®*Ґж ®зҐаҐ¤Ё}
  44. new(q); {ᮧ¤*Ґ¬ п祩Єг}
  45. q^.info:=x;
  46. q^.next:=nil;
  47. p:=q;
  48. end
  49. else
  50. new(q);
  51. q^.info:=x;
  52. q^.next:=nil;
  53. end;
  54. {Ї®Є*§}
  55. procedure show(l:list); {Ї®Є*§ зЁбҐ«}
  56. var p:list;
  57. begin
  58. p:=l;
  59. write('<');
  60. while p<> nil do
  61. begin
  62. write(p^.info :6);
  63. p:=p^.next;
  64. end;
  65. write('>'); readln;
  66. end;
  67. {§**ҐбҐ*ЁҐ н«Ґ¬Ґ*в®ў ў ¬*ббЁў}
  68. procedure mas(var p:list);
  69. var a:array[1..5] of integer;
  70. i:integer; l:list;
  71. begin
  72. while p<>nil do begin
  73. if p^.info<>0 then begin
  74. a[i]:=p^.info;
  75. end;
  76. writeln('ў ¬*ббЁўҐ:=');
  77. write(a[i]);
  78. end; end;
  79. {®б*®ў**п Їа®Ја*¬¬* }
  80. VAR p,s1,s2,s3,l:list;
  81. i,j:integer;
  82. a:array[1..5] of integer;
  83. BEGIN
  84. s1:=nil;
  85. s2:=nil;
  86. createlist(s3);
  87.  
  88. mas(s3);
  89. for i:=0 to 2 do begin
  90. if (sumd(a[i]) = a[i+1]) and (sumd(a[i+1]) = a[i]) then begin
  91. vnachalo(s1,a[i]);
  92. vnachalo(s2,a[i+1]);
  93. end;end; writeln(' s3');
  94. show(s3); writeln('s1'); show(s1);
  95. writeln('s2'); show(s2); readln; end.

Решение задачи: «Ошибка 201, как исправить ?»

textual
Листинг программы
  1.  procedure mas(p: list; var a: TArray; var n: integer);
  2.   begin
  3.     n := 0;
  4.     while p <> nil do
  5.     begin
  6.       if p^.info <> 0 then
  7.       begin
  8.         Inc(n);
  9.         a[n] := p^.info;
  10.       end;
  11.       p := p^.Next;
  12.     end;
  13.   end;

Объяснение кода листинга программы

  1. В процедуре mas объявлены три переменные: p (тип list), a (тип TArray) и n (тип integer).
  2. Переменная n инициализируется значением 0.
  3. Затем происходит цикл while, который выполняется до тех пор, пока p не станет равным нулю.
  4. В цикле проверяется значение поля info у каждого элемента списка p.
  5. Если значение поля info равно 0, то увеличивается значение переменной n на единицу, и элемент с этим значением добавляется в массив a.
  6. После проверки всех элементов списка, переменная p обновляется, чтобы указать на следующий элемент в списке.
  7. Цикл while повторяется до тех пор, пока все элементы списка не будут обработаны.
  8. По завершении процедуры, переменная n содержит количество элементов, добавленных в массив a.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы