aide avec un exercice pascal

aide avec un exercice pascal - Delphi/Pascal - Programmation

Marsh Posté le 20-12-2015 à 10:36:57    

ecrivez un programme qui permet d'identifier les entiers premiers circulaires saisis dans un tableau de taille n. 311 est un premier circulaire car toutes les  
combinaisons à 2 ou 3 de ses chiffres sont premiers.
Pouvez-vous me dire ou est la faute dan mon travail?
 
program ex1;
uses wincrt;
type
tab1= array [1..30] of integer;
tab2= array [1..6] of integer;
var
c,n,p,i,e,j: integer;
Tp: array [1..12] of integer;
T: array [1..30] of integer;
ch,ch2,ch1,ch3: string;
test: boolean;
 
procedure saisie (var n: integer);
begin
repeat
   writeln ('donner n entre 5 et 30');
   readln (n);
until  n in [5..30];
end;
 
procedure remplissage (n: integer; var T: tab1);
begin
for i:=1 to n do  
repeat
    writeln ('donner T[',i,'] entier > 0 et de 3 chiffres');
    readln (T[i]);
until  (T[i] > 100) and (T[i] < 999);
end;
 
function verif (c: integer): boolean;
begin
i:= 0; p:=0;
test:= false;
repeat
i:= i+1;
p:= c mod i;
until
   (p<>1) or (i = c div 2);
if p<>1 then
  test:= false
else
  test:= true;
verif:= test;
end;
 
procedure scrambler (c: integer; var Tp: tab2);
begin
str (c,ch);
ch1:= copy (ch,1,1);  
ch2:= copy (ch,2,1);
ch3:= copy (ch,3,1);
val(ch1+ch3+ch2,Tp[1],e);
val(ch3+ch2+ch1,Tp[2],e);
val(ch3+ch1+ch2,Tp[3],e);
val(ch2+ch1+ch3,Tp[4],e);
val(ch2+ch3+ch1,Tp[5],e);        
val(ch,Tp[6],e);
val(ch1+ch2,Tp[7],e);
val(ch2+ch1,Tp[8],e);
val(ch1+ch3,Tp[9],e);
val(ch3+ch1,Tp[10],e);
val(ch2+ch3,Tp[11],e);
val(ch3+ch2,Tp[12],e);
end;
 
begin
saisie (n);
remplissage (n,T);
for i:= 1 to n do
begin
scrambler (T[i],Tp);
j:=0;
repeat
j:=j+1;
until (not verif (T[j])) or (j=6);
if test = false then  
T[i]:= 0;
end;
writeln ('les nombre premiers circulaires sont');
for i:=1 to n do
write(T[i]);
end.


Message édité par mehdi1456 le 20-12-2015 à 12:22:07
Reply

Marsh Posté le 20-12-2015 à 10:36:57   

Reply

Marsh Posté le 20-12-2015 à 15:17:24    

Hello Mehdi1456,
 
Alors déjà cette erreur ...  
 
Ici tab2 est déclaré comme un tableau de 6 entiers

Code :
  1. type
  2. ...
  3. tab2= array [1..6] of integer;
  4. ...


 
Et là tu essaies de stocker un entier au delà des "6 places disponibles"  

Code :
  1. procedure scrambler (c: integer; var Tp: tab2);
  2. begin
  3. str (c,ch);
  4. ch1:= copy (ch,1,1); 
  5. ch2:= copy (ch,2,1);
  6. ch3:= copy (ch,3,1);
  7. val(ch1+ch3+ch2,Tp[1],e);
  8. val(ch3+ch2+ch1,Tp[2],e);
  9. val(ch3+ch1+ch2,Tp[3],e);
  10. val(ch2+ch1+ch3,Tp[4],e);
  11. val(ch2+ch3+ch1,Tp[5],e);       
  12. val(ch,Tp[6],e);
  13. val(ch1+ch2,Tp[7],e);
  14. ...


---------------
il n'y a pas que le VTT dans la vie, il y a le Snowboard aussi ...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed