Besoin d'aide, programmation pascal

pascal68360 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
pascal68360 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
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. nabil07 Messages postés 161 Statut Membre 64
     
    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. pascal68360 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
       
      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
  2. nabil07 Messages postés 161 Statut Membre 64
     
    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
  3. pascal68360 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
     
    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