Ki peut me fair 1 exercice PASCAL !!!

Résolu
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
Configuration: Windows Vista
Internet Explorer 7.0

6 réponses

  1. 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
    1. Modérateur
      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
  2. 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
    1. 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
      1. Modérateur
        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
    2. 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
      1. Modérateur
        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
      2. Modérateur
        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
    3. Modérateur
      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
      1. les valeurs sont
        2,3,5,7,11,......
        le pgrogramme contient une boucle (tantque <condition> faire ........) ou (Repeter ....... jusqu'à <Condition>
        0