| programme en Pascal | |
|
|
Auteur | Message |
---|
mtcs Administrateur
Nombre de messages : 1605 Date d'inscription : 21/11/2006
| Sujet: programme en Pascal Mar 27 Fév - 22:45 | |
| soit le programme en Pascal suivante: program nombre_premier; uses wincrt; var n:integer; procedure lecture (var n:integer); begin repeat writeln ('saisir un nombre entre -32768 et 32768 '); readln (n); until (n> -32768) and (n< 32767); end; procedure premier (n:integer); var i:byte; r:real; r1 :integer; test:boolean; begin r := sqrt(n); writeln ('la racine carée de ',n,' est ',r:5:2); r1 := round(r); i:= 2; test := true; repeat i:=i+1; if (r1 mod i = 0) then begin test := false; end; until (i= r1) or (test = true); if test = true then writeln (n,' est un nombre premier') else writeln (n,' est un nombre composé, il est divisible par ',i) end; begin lecture (n); premier (n); end.
- Que fait programme
- Trouver l'erreur dans ce programme
| |
|
| |
Chaker Administrateur
Nombre de messages : 731 Age : 34 Date d'inscription : 17/01/2007
| Sujet: Re: programme en Pascal Mar 27 Fév - 23:10 | |
| l'erreur c - Code:
-
until (i= r1) or (test = true); il faudra mettre (test=false) !! sinon tous les nombres (>3) serons concidérés comme premiers | |
|
| |
Chaker Administrateur
Nombre de messages : 731 Age : 34 Date d'inscription : 17/01/2007
| Sujet: Re: programme en Pascal Mar 27 Fév - 23:16 | |
| bon il ya aussi le message car si test = true le nombre est premier c varai mais dans le cas contraire il peut ne pas être divisible par 3 !! avant: - Code:
-
if test = true then writeln (n,' est un nombre premier') else writeln (n,' est un nombre composé, il est divisible par ',i) end; aprés: - Code:
-
if test = true then writeln (n,' est un nombre premier') else writeln (n,' n''est pas un nombre premier') end; | |
|
| |
Chaker Administrateur
Nombre de messages : 731 Age : 34 Date d'inscription : 17/01/2007
| Sujet: Re: programme en Pascal Mar 27 Fév - 23:19 | |
| et je voulais rappeler que c'est deux instructions sont les même:
- if test = true then
- if then then
et aussi c'est deux:
- if test=false then
- if not test then
| |
|
| |
Chaker Administrateur
Nombre de messages : 731 Age : 34 Date d'inscription : 17/01/2007
| Sujet: Re: programme en Pascal Mar 27 Fév - 23:23 | |
| et aussi il faut faire une petite modification avant: - Code:
-
until (i= r1)... aprés: - Code:
-
until (i >= r1)... car pour la valeur 5 r1=2 et dés la premiére itération i=3 !! | |
|
| |
mtcs Administrateur
Nombre de messages : 1605 Date d'inscription : 21/11/2006
| Sujet: Re: programme en Pascal Mar 27 Fév - 23:58 | |
| | |
|
| |
Chaker Administrateur
Nombre de messages : 731 Age : 34 Date d'inscription : 17/01/2007
| Sujet: Re: programme en Pascal Mer 28 Fév - 14:31 | |
| - mtcs a écrit:
- merci bcp chaker
de rien Mohamed | |
|
| |
makram modérateur
Nombre de messages : 549 Age : 35 Date d'inscription : 29/12/2006
| Sujet: Re: programme en Pascal Mer 28 Fév - 15:17 | |
| | |
|
| |
Chaker Administrateur
Nombre de messages : 731 Age : 34 Date d'inscription : 17/01/2007
| Sujet: Re: programme en Pascal Mer 28 Fév - 19:51 | |
| - makram a écrit:
- merci bcp chaker
de rien Makram | |
|
| |
mtcs Administrateur
Nombre de messages : 1605 Date d'inscription : 21/11/2006
| Sujet: Re: programme en Pascal Mer 28 Fév - 21:27 | |
| voila la solution complete:
program nombre_premier; uses wincrt; var n:integer;
procedure lecture (var n:integer); begin repeat writeln ('saisir un nombre entre -32768 et 32768 '); readln (n); until (n> -32768) and (n< 32767); end;
procedure premier (n:integer); var i:byte; r:real; r1 :integer; test:boolean; begin r := sqrt(n); writeln ('la racine carée de ',n,' est ',r:5:2); r1 := round(r); i:= 2; test := true; repeat inc(i); if (r1 mod i = 0) then begin test := false; end; until (i >= r1) or (test = false); if test = true then writeln (n,' est un nombre premier') else writeln (n,' est un nombre composée, divisible par ',i) end;
begin lecture (n); premier (n); end. | |
|
| |
mtcs Administrateur
Nombre de messages : 1605 Date d'inscription : 21/11/2006
| Sujet: Re: programme en Pascal Mer 28 Fév - 21:33 | |
| une remarque mathimatique: pour que le programme fonction correctement il faut que le nombre saisie par l'utilisateur soit strictement positif, pour cet raison on va modifier la condition de saisie à (n > 0 and n< 65535) et changer type de integer à word
Rappel:
la deffirence entre les types integer et word
- Integer c'est un type signés codé sur deux octets signés, compri entre -32768 et 32767 ( 0 est un nombre positif)
- Word c'est un type non signés encore codé sur deux octet mais non signés, compri ente 0 et 65535
- Autres types signés: Shortint (entre -128 et 127) et longint (entre -2147483648 et 2147483647)
- Autres types non signés: byte (entre 0 et 255), longword (entre 0 et 4294967295)
Dernière édition par le Mer 28 Fév - 21:54, édité 1 fois | |
|
| |
mtcs Administrateur
Nombre de messages : 1605 Date d'inscription : 21/11/2006
| Sujet: Re: programme en Pascal Mer 28 Fév - 21:36 | |
| voila la nouvelle solution: program nombre_premier; uses wincrt; var n:word; procedure lecture (var n:word); begin repeat writeln ('saisir un nombre > 0 '); readln (n); until (n> 0) and (n< 65535); end; procedure premier (n:word); var i:byte; r:real; r1 :word; test:boolean; begin r := sqrt(n); writeln ('la racine carée de ',n,' est ',r:5:2); r1 := round(r); i:= 2; test := true; repeat inc(i); if (r1 mod i = 0) then begin test := false; end; until (i >= r1) or (test = false); if test = true then writeln (n,' est un nombre premier') else writeln (n,' est un nombre composée, divisible par ',i) end; begin lecture (n); premier (n); end. | |
|
| |
Chaker Administrateur
Nombre de messages : 731 Age : 34 Date d'inscription : 17/01/2007
| Sujet: Re: programme en Pascal Mer 28 Fév - 21:45 | |
| je voulais te demander Mohamed pour quoi utilise tu une condition pour la lecture de n ?? - Code:
-
until (n> -32768) and (n< 32767); c'est inutile car il ya seulement deux valeurs qui peuvent ne pas vérifier cette condition et, surtout, ne pas provoquer une erreur et ce sont ces valeurs là que tu mets comme bornes en effet si tu mets des valeurs supérieures à 32767 ou bien inférieures à -32768 tu provoque une erreur et le pogramme se ferme | |
|
| |
mtcs Administrateur
Nombre de messages : 1605 Date d'inscription : 21/11/2006
| Sujet: Re: programme en Pascal Mer 28 Fév - 21:59 | |
| - chakerbh a écrit:
- je voulais te demander Mohamed pour quoi utilise tu une condition pour la lecture de n ??
- Code:
-
until (n> -32768) and (n< 32767); c'est inutile car il ya seulement deux valeurs qui peuvent ne pas vérifier cette condition et, surtout, ne pas provoquer une erreur et ce sont ces valeurs là que tu mets comme bornes en effet si tu mets des valeurs supérieures à 32767 ou bien inférieures à -32768 tu provoque une erreur et le pogramme se ferme merci chaker à ce question: je fais ça mon ami pour rappeler que le type integer est copmri entre -32768 et 32767 (na3raf ali enti ta3rafha akthar meni mais ana 3maltha pour les débutant comme moi ) | |
|
| |
Chaker Administrateur
Nombre de messages : 731 Age : 34 Date d'inscription : 17/01/2007
| Sujet: Re: programme en Pascal Mer 28 Fév - 22:10 | |
| je vois .... | |
|
| |
Contenu sponsorisé
| Sujet: Re: programme en Pascal | |
| |
|
| |
| programme en Pascal | |
|