Forum programmation
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 programme en Pascal

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
mtcs
Administrateur
Administrateur
avatar

Nombre de messages : 1605
Date d'inscription : 21/11/2006

MessageSujet: 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.




  1. Que fait programme
  2. Trouver l'erreur dans ce programme
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: 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;
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: 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 !!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mtcs
Administrateur
Administrateur
avatar

Nombre de messages : 1605
Date d'inscription : 21/11/2006

MessageSujet: Re: programme en Pascal   Mar 27 Fév - 23:58

merci bcp chaker
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: programme en Pascal   Mer 28 Fév - 14:31

mtcs a écrit:
merci bcp chaker

de rien Mohamed Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
makram
modérateur
modérateur
avatar

Nombre de messages : 549
Age : 28
Date d'inscription : 29/12/2006

MessageSujet: Re: programme en Pascal   Mer 28 Fév - 15:17

merci bcp chaker
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: programme en Pascal   Mer 28 Fév - 19:51

makram a écrit:
merci bcp chaker


de rien Makram
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mtcs
Administrateur
Administrateur
avatar

Nombre de messages : 1605
Date d'inscription : 21/11/2006

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mtcs
Administrateur
Administrateur
avatar

Nombre de messages : 1605
Date d'inscription : 21/11/2006

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mtcs
Administrateur
Administrateur
avatar

Nombre de messages : 1605
Date d'inscription : 21/11/2006

MessageSujet: Re: programme en Pascal   Mer 28 Fév - 21:36

voila la nouvelle solution: travaille

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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
mtcs
Administrateur
Administrateur
avatar

Nombre de messages : 1605
Date d'inscription : 21/11/2006

MessageSujet: 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 Laughing )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Chaker
Administrateur
Administrateur
avatar

Nombre de messages : 731
Age : 27
Date d'inscription : 17/01/2007

MessageSujet: Re: programme en Pascal   Mer 28 Fév - 22:10

je vois .... Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: programme en Pascal   

Revenir en haut Aller en bas
 
programme en Pascal
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Obsolète] Une autre programme d'animation gratuit.
» Intégrer une page HTML dans son programme ?
» Programme calculette
» Bloquer son programme au bout de X joures ??
» Tray Programme dans la zone de notification 'a cote de lhorl

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum programmation :: Programmation :: Delphi & Pascal :: Pascal :: Exercices-
Sauter vers: