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 -
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.
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:
- Pascal
- Turbo pascal - Télécharger - Édition & Programmation
- My pascal - Télécharger - Édition & Programmation
- Dev pascal - Télécharger - Édition & Programmation
- Le protocole assure que la communication entre l'ordinateur de pascal et le serveur de visiodoct est car les informations seront avant d'être envoyées. - Forum Pascal
- Probleme en pascal - Forum Pascal
2 réponses
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...
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...
En gros, savoir ce qu'il est supposé faire et ce qui ne marche pas...