Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Runtime error 201
Forum - Pascal - Runtime error 201

Avatar
EgoFred (Normal User)
Newbie


Messaggi: 2
Iscritto: 22/05/2015

Segnala al moderatore
Postato alle 16:10
Venerdì, 22/05/2015
Ciao a tutti,
posto questo semplice programma scolastico che devo consegnare, ma che alla fine mi da l'errore runtime error 201.
Spero riusciate ad aiutarmi e ringrazio anticipatamente tutti!

Program TabellaTabellineFinoA_10;
uses crt, graph;
const
percorso='D:\Programmi\FreePascal';
incipit='Tabelline fino al dieci dei primi dieci numeri';
zero='0';
mcgames='MCGames(c)';
diritti='Mirko Cantilli Games, all rights reserved (c).';
risultato='Inserisci numero, quindi premi invio, inserisci moltiplicatore, quindi premi invio, per avere il risultato';
x1='x1';
x2='x2';
x3='x3';
x4='x4';
x5='x5';
x6='x6';
x7='x7';
x8='x8';
x9='x9';
x10='x10';
n1='1';
n2='2';
n3='3';
n4='4';
n5='5';
n6='6';
n7='7';
n8='8';
n9='9';
n10='10';
var tabellat:array[1..10,1..10] of integer;
r,c,cnt,n,ccc,h,hh,pyl,pxl,f,scheda,modo,nn,m,ns,cc : integer;
begin
scheda:=detect;
initgraph(scheda,modo,percorso);
setcolor(white);
line(30,50,30,250);
line(30,250,230,250);
line(250,250,30,250);
line(30,50,230,50);
pxl:=trunc(200/10);
pyl:=trunc(200/10);
ccc:=0;
repeat
begin
ccc:=ccc+1;
line(((pxl*ccc)+30),50,((pxl*ccc)+30),250);
end;
until ccc=10;
ccc:=0;
repeat
begin
ccc:=ccc+1;
line(50,((pyl*ccc)+50),250,((pyl*ccc)+50));
end;
until ccc=10;
f:=getmaxx;
moveto((f div 2),20);
outtext(incipit);
moveto(15,40);
outtext(zero);
moveto(15,65);
outtext(x1);
moveto(15,85);
outtext(x2);
moveto(15,105);
outtext(x3);
moveto(15,125);
outtext(x4);
moveto(15,145);
outtext(x5);
moveto(15,165);
outtext(x6);
moveto(15,185);
outtext(x7);
moveto(15,205);
outtext(x8);
moveto(15,225);
outtext(x9);
moveto(15,245);
outtext(x10);
moveto(35,40);
outtext(n1);
moveto(55,40);
outtext(n2);
moveto(75,40);
outtext(n3);
moveto(95,40);
outtext(n4);
moveto(115,40);
outtext(n5);
moveto(135,40);
outtext(n6);
moveto(155,40);
outtext(n7);
moveto(175,40);
outtext(n8);
moveto(195,40);
outtext(n9);
moveto(215,40);
outtext(n10);
moveto(15,270);
outtext(mcgames);
moveto(15,275);
outtext(diritti);
repeat
begin
c:=c+1;
n:=+1;
repeat
begin
r:=r+1;
cc:=cc+1;
ns:=n*cc;
tabellat[r,c]:=ns;
end;
until r=10;
begin
r:=0;
cc:=0;
ns:=0;
end;
end;
until c=10;
repeat
begin
repeat
begin
hh:=hh+1;
r:=r+1;
pyl:=pyl*hh;
moveto(pxl,pyl);
write(tabellat[r,c]);
end;
until hh=10;
hh:=0;
pyl:=0;
r:=0;
end;
until h=10;
moveto(250,130);
outtext(risultato);
readln(nn);
readln(m);
moveto(250,140);
write(tabellat[m,nn]);
repeat
until keypressed;
end.

Ultima modifica effettuata da EgoFred il 22/05/2015 alle 16:11
PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 950
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 20:51
Sabato, 23/05/2015
Ciao!

Ho letto il tuo programma, e ho riscontrato le variabili contatore non correttamente inizializzate.
Ecco il programma corretto:
Codice sorgente - presumibilmente Delphi

  1. Program TabellaTabellineFinoA_10;
  2. uses crt, graph;
  3. const
  4. incipit='Tabelline fino al dieci dei primi dieci numeri';
  5. zero='0';
  6. mcgames='MCGames(c)';
  7. diritti='Mirko Cantilli Games, all rights reserved (c).';
  8. risultato='Inserisci numero, quindi premi invio, inserisci moltiplicatore, quindi premi invio, per avere il risultato';
  9. x1='x1';
  10. x2='x2';
  11. x3='x3';
  12. x4='x4';
  13. x5='x5';
  14. x6='x6';
  15. x7='x7';
  16. x8='x8';
  17. x9='x9';
  18. x10='x10';
  19. n1='1';
  20. n2='2';
  21. n3='3';
  22. n4='4';
  23. n5='5';
  24. n6='6';
  25. n7='7';
  26. n8='8';
  27. n9='9';
  28. n10='10';
  29. var tabellat:array[1..10,1..10] of integer;
  30.     r,c,cnt,n,ccc,h,hh,pyl,pxl,f,nn,m,ns,cc : integer;
  31.     scheda,modo:integer;
  32. begin
  33. scheda:=detect; modo:=0;
  34. initgraph(scheda, modo, '');
  35. setcolor(white);
  36. line(30,50,30,250);
  37. line(30,250,230,250);
  38. line(250,250,30
  39. ,250);
  40. line(30,50,230,50);
  41. pxl:=trunc(200/10);
  42. pyl:=trunc(200/10);
  43. ccc:=0;
  44. repeat
  45.   ccc:=ccc+1;
  46.   line(((pxl*ccc)+30),50,((pxl*ccc)+30),250);
  47. until ccc=10;
  48. ccc:=0;
  49. repeat
  50.   ccc:=ccc+1;
  51.   line(50,((pyl*ccc)+50),250,((pyl*ccc)+50));
  52. until ccc=10;
  53. f:=getmaxx;
  54. moveto((f div 2),20);
  55. outtext(incipit);
  56. moveto(15,40);
  57. outtext(zero);
  58. moveto(15,65);
  59. outtext(x1);
  60. moveto(15,85);
  61. outtext(x2);
  62. moveto(15,105);
  63. outtext(x3);
  64. moveto(15,125);
  65. outtext(x4);
  66. moveto(15,145);
  67. outtext(x5);
  68. moveto(15,165);
  69. outtext(x6);
  70. moveto(15,185);
  71. outtext(x7);
  72. moveto(15,205);
  73. outtext(x8);
  74. moveto(15,225);
  75. outtext(x9);
  76. moveto(15,245);
  77. outtext(x10);
  78. moveto(35,40);
  79. outtext(n1);
  80. moveto(55,40);
  81. outtext(n2);
  82. moveto(75,40);
  83. outtext(n3);
  84. moveto(95,40);
  85. outtext(n4);
  86. moveto(115,40);
  87. outtext(n5);
  88. moveto(135,40);
  89. outtext(n6);
  90. moveto(155,40);
  91. outtext(n7);
  92. moveto(175,40);
  93. outtext(n8);
  94. moveto(195,40);
  95. outtext(n9);
  96. moveto(215,40);
  97. outtext(n10);
  98. moveto(15,270);
  99. outtext(mcgames);
  100. moveto(15,275);
  101. outtext(diritti);
  102. c:=0;
  103. cc:=0;
  104. n:=0;
  105. repeat
  106.   c:=c+1;
  107.   n:=n+1;
  108.   r:=0;
  109.   repeat
  110.     r:=r+1;
  111.     cc:=cc+1;
  112.     ns:=n*cc;
  113.     tabellat[r,c]:=ns;
  114.   until r=10;
  115.   r:=0;
  116.   cc:=0;
  117.   ns:=0;
  118. until c=10;
  119. h:=0;
  120. repeat
  121.   hh:=0;
  122.   h:=h+1;
  123.   repeat
  124.     hh:=hh+1;
  125.     r:=r+1;
  126.     pyl:=pyl*hh;
  127.     moveto(pxl,pyl);
  128.     write(tabellat[r,c]:4);
  129.    until hh=10;
  130.    writeln;
  131.    pyl:=0;
  132.    r:=0;
  133. until h=10;
  134. moveto(250,130);
  135. outtext(risultato);
  136. writeln;
  137. write('Colonna ? ');
  138. readln(nn);
  139. write('Riga ? ');
  140. readln(m);
  141. moveto(250,140);
  142. write(tabellat[m,nn]);
  143. repeat
  144. until keypressed;
  145. end.



Nulla va più veloce della luce, quindi rilassati.
PM Quote
Avatar
EgoFred (Normal User)
Newbie


Messaggi: 2
Iscritto: 22/05/2015

Segnala al moderatore
Postato alle 13:40
Venerdì, 29/05/2015
Innanzi tutto grazie mille!
In secondo luogo io ho copiato il programma da lei corretto, ma compilandolo con free pascal su windows mi da sempre l'errore con l'exitcode 201.
:)

PM Quote
Avatar
Poggi Marco (Member)
Guru


Messaggi: 950
Iscritto: 05/01/2010

Segnala al moderatore
Postato alle 20:32
Sabato, 30/05/2015
Errore 201 indica errore di assegnamento tra tipi o indice fuori range in un vettore.
( Da manuale)
Codice sorgente - presumibilmente Delphi

  1. 201 Range check error
  2. If you compiled your program with range checking on, then you can get this error in the following cases:
  3. An array was accessed with an index outside its declared range.
  4. Trying to assign a value to a variable outside its range (for instance an enumerated type).

Probabilmente non hai inizializzato gli indici dei cicli correttamente.


Nulla va più veloce della luce, quindi rilassati.
PM Quote