Ki peut me fair 1 exercice PASCAL !!!

Résolu/Fermé
mikeechoromio - 10 mai 2008 à 03:26
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 - 23 juin 2008 à 23:32
Bonsoir a tous ,
l'exercice consiste a écrir 1 programme qui cherche et affiche les entiers naturels premiers inférieurs a 100 .
(naturel : n'est divisible que par 1 et lui meme , en + , 1 n'est pas premier .)
je sais qu'il faut utiliser la structure 'pour' (controle itérative ) mais je ne sais pas pk il marche pas
svp aidez moi , mon dv. d'info. est demain !!!
nb : j'ai pascal version 1.5
A voir également:

6 réponses

Archi-dessin Messages postés 270 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 28 décembre 2009 25
10 juin 2008 à 20:44
le langage pascal est très limité et je l'utilise que pous raffraichire la logique de programmation en je travas sur d'autre logociel.
1
Archi-dessin Messages postés 270 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 28 décembre 2009 25
10 mai 2008 à 03:43
les valeurs sont
2,3,5,7,11,......
le pgrogramme contient une boucle (tantque <condition> faire ........) ou (Repeter ....... jusqu'à <Condition>
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
9 juin 2008 à 15:25
program mikeechoromio;

const max=100;

type solution=record
     n:integer;
     a:array[1..max] of integer;
     end;

function PremierJusqua(i:integer;s:solution):boolean;
var j:integer;
begin
     for j:=1 to s.n do
         if (i mod s.a[j])=0 then exit(false);
     result:=true;
end;

function NombresPremiers:solution;
var i:integer;
begin
     result.n:=0;
     for i:=2 to max do
         if PremierJusqua(i,result) then begin
                                         inc(result.n);
                                         result.a[result.n]:=i;
                                         end;
end;

var s:solution; k:integer;
begin
     s:=NombresPremiers;
     for k:=1 to s.n do
         writeln(s.a[k]);
     readln;
end.
0
Archi-dessin Messages postés 270 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 28 décembre 2009 25
9 juin 2008 à 16:11
salut,
votre programme présente des erreurs
par exemples la variable result ou est son déclaration
quand même vous avez essayer,c'est bien de votre par
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
9 juin 2008 à 21:25
salut, j'utilise Dev-Pascal où j'ai vérifié le programme qui marche très bien.

La variable result n'a jamais besoin d'être déclaré car il s'agit d'un résultat lié à une fonction (donc automatiquement déclaré de type boolean dans PremierJusqua et de type solution dans NombresPremiers).

Comment fais-tu pour attribuer le résultat à une fonction si ce n'est comme ça ?
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
9 juin 2008 à 21:48
Ainsi moi je fais :

function plus(a,b:integer):integer;
begin
result:=a+b; // result est déclaré de type integer
end;

Comment tu fais toi ? (ça peux toujours servir...)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Archi-dessin Messages postés 270 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 28 décembre 2009 25
10 juin 2008 à 20:13
slt,
pour moi le turbo pascal, je n'ai aucune aider de votre langage, mais je remarque dans l'ensemnble il se ressemble.
pour la fonction, c'est de la même manière et j'ajoute en des unités pour que le programme ne soit pas très long.
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
10 juin 2008 à 20:32
Bien sûr, Turbo Pascal, Dev-Pascal, son tous deux des programmes, le langage Pascal est lui le même, c'est pourquoi je ne comprends pas ta remarque précédente m'indiquant des erreurs sur cette fonction pourtant très classique...
0
uses wincrt
var
i,j:integer
begin
for i:=1 to 100 do
j:=1;
repeat
j:=j+1
until i mod j=0;
if i=j then writeln(i);
end.
0
KX Messages postés 16755 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 12 février 2025 3 020
23 juin 2008 à 23:32
Ton programme ne marche pas tel quel, j'y ai donc apporté les rectifications nécessaires :
var i,j:integer;
begin
for i:=2 to 100 do
    begin
    j:=1;
    repeat
          j:=j+1
    until i mod j=0;
    if i=j then writeln(i);
    end;
readln;
end.
J'avoue que c'est nettement plus court que mon précédent programme...
0