Forum programmation
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.


Forum programmation
 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment : -55%
Coffret d’outils – STANLEY – ...
Voir le deal
21.99 €

 

 programme en Pascal

Aller en bas 
3 participants
AuteurMessage
mtcs
Administrateur
Administrateur
mtcs


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

programme en Pascal Empty
MessageSujet: programme en Pascal   programme en Pascal EmptyMar 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
Chaker
Administrateur
Administrateur
Chaker


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

programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal EmptyMar 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
Chaker
Administrateur
Administrateur
Chaker


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

programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal EmptyMar 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
Chaker
Administrateur
Administrateur
Chaker


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

programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal EmptyMar 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
Chaker
Administrateur
Administrateur
Chaker


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

programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal EmptyMar 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
mtcs
Administrateur
Administrateur
mtcs


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

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

merci bcp chaker
Revenir en haut Aller en bas
Chaker
Administrateur
Administrateur
Chaker


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

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

mtcs a écrit:
merci bcp chaker

de rien Mohamed Very Happy
Revenir en haut Aller en bas
makram
modérateur
modérateur
makram


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

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

merci bcp chaker
Revenir en haut Aller en bas
Chaker
Administrateur
Administrateur
Chaker


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

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

makram a écrit:
merci bcp chaker


de rien Makram
Revenir en haut Aller en bas
mtcs
Administrateur
Administrateur
mtcs


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

programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal EmptyMer 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
mtcs
Administrateur
Administrateur
mtcs


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

programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal EmptyMer 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
mtcs
Administrateur
Administrateur
mtcs


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

programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal EmptyMer 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
Chaker
Administrateur
Administrateur
Chaker


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

programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal EmptyMer 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
mtcs
Administrateur
Administrateur
mtcs


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

programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal EmptyMer 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
Chaker
Administrateur
Administrateur
Chaker


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

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

je vois .... Wink
Revenir en haut Aller en bas
Contenu sponsorisé





programme en Pascal Empty
MessageSujet: Re: programme en Pascal   programme en Pascal Empty

Revenir en haut Aller en bas
 
programme en Pascal
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» exo pascal
» calculatrice en pascal
» exo sur pascal pour 2m1
» Cours de pascal 'Algerie'

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum programmation :: Programmation :: Delphi & Pascal :: Pascal :: Exercices-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser