Pascal

Fermé
administrateurRESEAUdebutant Messages postés 33 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 novembre 2011 - 23 mai 2011 à 11:14
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 23 mai 2011 à 14:21
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.

2 réponses

blux Messages postés 26396 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 octobre 2024 3 308
23 mai 2011 à 11:16
Salut,

et c'est quoi qui coince ?
0
administrateurRESEAUdebutant Messages postés 33 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 16 novembre 2011 1
23 mai 2011 à 11:27
salut , j'ai rien compris. SVP quel est votre question?
0
blux Messages postés 26396 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 25 octobre 2024 3 308
23 mai 2011 à 13:19
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
23 mai 2011 à 14:21
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