Besoin d'aide, programmation pascal

Bonjour,

Je suis actuellement en DUT de maintenance industrielle et j'ai quelque soucie avec une de nos matière: la programmation.

Voilà mon soucie:

1) Ecrivez un programme Pascal qui affiche l'ensemble des nombres entiers entre 1 et 10000 dont la somme des chiffres est divisible par 7.

exemples:
123: 1+2+3=6>>pas bon
142: 1+4+2=7>>bon

2) Soit un vecteur V de n entiers; n est une constante. Je désire trouver le plus petit des entiers du vecteur V.

-Ecrivez le programme Pascal corespondant.

Si quelqu'un pourrait me donner ces 2 programmes en Pascal ça m'aiderai beaucoup.

Merci d'avance.

3 réponses

  1. Ouai merci beaucoup j'ai tous compris.

    Mais nous on utilisai la commande "mod" pour avoir le reste d'une division, et "div" pour avoir le quotient d'une division.

    Voici ceux que moi j'avais fait. Dis moi ceux que tu en penses:

    program div 7;

    var a,b,c,d,e,f,g,h,i:real;

    for i:=1 to 10000 do
    begin
    a:=i mod 10000
    b:=i div 10000
    c:=a mod 1000
    d:=a div 1000
    e:=c mod 100
    f:=c div 100
    g:=e mod 10
    h:=e div 10
    g:=d mod 1
    h:=d div 1

    if (b+d+f+g+h) mod 7=0
    writeln(i)
    end.

    Y a t'il des erreurs? Je ne sais jamais ou je doit mettre les ";" ( je n'est eu que 4 séances de programmation pour l'instant... )
    0
    1. bonjour,

      avant de commencer,tu dois savoir le mode de fonctionnement des deux opérateurs "/" et "%";
      - / : (eg: a/b) renvoi la partie entière de la division de a sur b.
      - % : (eg: a%b) renvoi le reste de division de a divisé par b.
      je m'éxcuse, je me trompe dans le code, le voici de nouveau:

      function div7()
      var val,i,sum:integer;
      begin
      for i:=1 to 10000
           begin
               val:=i;
               do
                    sum:=sum + (val%10);
                    val:=val/10;
               until(val==0);
               if((sum%7)==0)
                      writeln('c"est bon!');
               else
                      writeln('c"est pas bon.');
           end
      end;
      

      maintenant on passe à l'explication:
      on va parcourir tous les nombres entre 1 et 10000 (via le boucle for)
      à chaque fois on récupère le nombre dans la variable val pour qu'on puisse faire nos opération dans affecter le bon fonctionnement du programme.
      dans la variable sum on va sauvgarder la somme des chiffre du nombre val
      et s'arrête lorsque val=0
      voici un exemple :
      pour l'itération i=123 ; sum=0
      sum = 0 + (123%10) = 3 ; val = 123 / 10 = 12
      sum = 3 + 12%10 =3+2=5 ; val = 12/10 = 1
      sum = 5 + 1%10 = 5+1=6 ; val = 1/10 = 0

      donc 6 <> 7

      je souhaite que tu as mieux compris maintenant, et que j'ai pu te passé l'information.

      .
      0
      1. Bonjour,

        voici une proposition pour résoudre

        
        function div7()
        var val,i,sum:integer;
        begin
        for i:=1 to 10000
             begin
                 val:=i;
                 do
                      sum:=val/10;
                      val:=val%10;
                 until(val==0);
                 if((sum%7)==0)
                        writeln('c"est bon!');
                 else
                        writeln('c"est pas bon.');
             end
        end;
        
        
        0
        1. Hello!

          Merci beaucoup pour ta réponse mais je n'est pas tout compris au programme:

          function div7()
          var val,i,sum:integer;
          begin
          for i:=1 to 10000
          begin
          val:=i;
          do
          sum:=val/10;
          val:=val%10;
          until(val==0);
          if((sum%7)==0)
          writeln('c"est bon!');
          else
          writeln('c"est pas bon.');
          end
          end;

          J'ai bien compris qu'on faisait une boucle avec les chifre de 1 a 10000, mais après je ne comprend vraiment plus rien. ( je suis vraiment pas doué en programmation...)

          Peut tu m'expliquer un peu plus en détail ce que tu as fait?
          0