Besoin d'aide, programmation pascal

Fermé
pascal68360 Messages postés 3 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 18 octobre 2009 - 17 oct. 2009 à 14:48
pascal68360 Messages postés 3 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 18 octobre 2009 - 18 oct. 2009 à 11:01
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.
A voir également:

3 réponses

nabil07 Messages postés 140 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 10 avril 2014 64
17 oct. 2009 à 15:20
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
pascal68360 Messages postés 3 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 18 octobre 2009
17 oct. 2009 à 16:18
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
nabil07 Messages postés 140 Date d'inscription vendredi 14 septembre 2007 Statut Membre Dernière intervention 10 avril 2014 64
18 oct. 2009 à 00:34
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
pascal68360 Messages postés 3 Date d'inscription samedi 17 octobre 2009 Statut Membre Dernière intervention 18 octobre 2009
18 oct. 2009 à 11:01
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