Pascal

administrateurRESEAUdebutant Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, SVP qui peut m'aider de corriger le programme suivant en pascal

program kap;

uses wincrt;

var k,n:integer ;

procedure saisie(var k:integer;n:integer);

begin

repeat

writeln('entrer k ');

readln(k);

until (k >= 1) and (k <= 1000) ;

n:=0;

case k of

1..9 : n:=1;

10..99 : n:=2;

100..999 : n:=3;

else

n := 4;

end;



function verif(k:integer;n:integer):integer ;

var e,p,p2 :integer;

ch2,ch : string;

begin

p:=0;

p2:=0;

str(sqr(k),ch,e);

ch2 := copy(ch,legnth(ch)-n+1,n);

delete(ch,length(ch)-n+1,n);

val(ch,p,e);

val(ch2,p2,e);



verif :=p+p2;

end;



procedure kaprekar(k:integer);

begin

if verif(k;n) = k then

writeln('le nombre est kaprekar');

else

writeln('le nbr n''est pas kaprekar');

end;



begin

saisie(k;n);

kaprekar(k);

end.
A voir également:

2 réponses

blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
Salut,

et c'est quoi qui coince ?
0
administrateurRESEAUdebutant Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   1
 
salut , j'ai rien compris. SVP quel est votre question?
0
blux Messages postés 27131 Date d'inscription   Statut Modérateur Dernière intervention   3 361
 
Ma question est de savoir ce qui ne va pas, pas de regarder de manière exhaustive ce programme.
En gros, savoir ce qu'il est supposé faire et ce qui ne marche pas...
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
1) Tu déclares des variables globales k et n, et tu utilises en parallèle des paramètres de fonction k et n, sais-tu au moins quelle valeur est utilisée dans le corps de la fonction ? La valeur de la variable globale, ou celle du paramètre ? Enlèves les variables globales !!!

2) Dans la procédure saisie
Tu modifies le paramètre n, il doit donc être passé avec le mot clé var.
À la fin du case, il te faut un end

3) Dans la fonction verif
e est un code d'erreur pour val ok, mais il ne sert à rien dans str.
pour le calcul de ch2, tu as mis legnth, c'est évidemment length

4) Dans la procédure kaprekar
Si tu utilises n, tu dois le passer en paramètre de la procédure
Le passage de paramètre se fait avec des virgules : verif(k,n) et non verif(k;n)
On ne met jamais de point virgule avant un else !

5) Dans les instructions du programme
C'est seulement maintenant que t mets tes variables k et n que tu avais globale, de sorte qu'elles soient locales au programme
Idem, que tout à l'heure, c'est saisie(k,n) avec une virgule et non un point virgule
Et kaprekar prenant désormais un paramètre n, il faut le rajouter

6) Maintenant que ça compile, il te reste plus qu'à voir si le programme fait bien ce que tu lui demandes (ça a plus ou moins l'air d'être le cas) ou débugger si nécessaire...
0