Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal
Pascal Forum d'entraide sur la programmation en langage Pascal et sur les EDI. Avant de poster -> la F.A.Q Pascal, les cours
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/01/2008, 16h16   #1
momo1367
Invité régulier
 
Inscription : janvier 2008
Messages : 22
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 22
Points : 9
Points : 9
Par défaut Afficher tous les diviseurs d'un nombre

bonjour
voila je suis vraiment bloquer pour resoudre un exercice
on demande d'ecrire un algorithme a l'aide d'une boucle pour qui affiche tous les diviseurs d'un nombre excepter le 1 et lui meme.
exemple 30
les diviseurs sont 23,5,6,10,15.
moi j'ai fais comme ca mais je crois bien qu'il manque quelque chose.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
program diviseur(input,output);
var i,n,y :longint;
begin
writeln('entrz un nombre entier');
readln(n);
y:=n div 2;
for i:=2 to y do  begin
if n mod i=0 then
writeln  (i)
else writeln('pas de diviseur');
end;
readln
end.
momo1367 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/01/2008, 16h30   #2
krachik
Expert Confirmé
 
Avatar de krachik
 
Inscription : décembre 2004
Messages : 1 964
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 1 964
Points : 3 965
Points : 3 965
Vu que tu as compris l'utilisation de la balise code voila uen occasion de l'utiliser
Ou se situe ton probleme?(ton code est correcte)
Si c'est pour l'affichage t'a juste qu'a pas afficher le "else writeln('pas diviseur')"
et utiliser un "write" pour l'affichage
@+
__________________
Je suis ce que je suis grâce à ce que nous sommes tous Humanité aux Humains!! !

Entre ce que je pense, ce que je veux dire, ce que je crois dire, ce que je dis ce que vous avez envie d'entendre, ce que vous croyez entendre, ce que vous entendez, ce que vous avez envie de comprendre, ce que vous comprenez ... Il y a dix possibilités que nous ayons des difficultés à communiquer. Mais essayons quand meme ....... E. Wells
krachik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2008, 18h04   #3
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 414
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 414
Points : 3 769
Points : 3 769
Siu,
Citation:
Envoyé par sidahmed Voir le message
Franchement, je ne te comprends pas ! Car j'ai bien déterminé la valeur maximale du compteur i.
Je ne dis pas le contraire, mais que pour Pascal, le stockage dans une variable à part ne change pa l'exécution : cette valeur est calculée une fois pour toute en entrée de la boucle, et ne sera donc pas refaite tant que tous les tours n'auront pas été exécutés.
On ne gagne donc rien à faire le calcul pour le sauver dans une variable.

Comme je l'ai ajouté, c'est quand même une bonne habitude à prendre, en prévision du passage à d'autres langages, qui eux, recalculeront cette valeur à chaque tour de boucle.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/01/2008, 18h07   #4
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 414
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 414
Points : 3 769
Points : 3 769
Zoi,
Citation:
Envoyé par krachik Voir le message
Vu que tu as compris l'utilisation de la balise code voila uen occasion de l'utiliser
Ou se situe ton probleme?(ton code est correcte)
Si c'est pour l'affichage t'a juste qu'a pas afficher le "else writeln('pas diviseur')"
et utiliser un "write" pour l'affichage
@+
Et on peut ajouter : prends l'habitude de formater ton code correctement (indenter, aérer, commentaires).
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 12h33   #5
sayko-kara
Invité de passage
 
Homme informatique
Étudiant
Inscription : janvier 2012
Messages : 1
Détails du profil
Informations personnelles :
Nom : Homme informatique
Localisation : Tunisie

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 1
Points : 4
Points : 4
Par défaut diviseur

Voilà ton programme :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program divise;
uses wincrt;
var
n:integer;
 
procedure diviseur(n:integer);
var
i:integer;
begin
     i:=1;
     repeat
          i:=i+1;
          if n mod i=0 then
          writeln(i);  
     until(i=n div 2);
end;
begin
    readln(n);
    diviseur(n);
end.
sayko-kara est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/01/2012, 13h28   #6
droggo
Expert Confirmé
 
Inscription : août 2006
Messages : 3 414
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 3 414
Points : 3 769
Points : 3 769
Jie,

Joli déterrage (4 ans) !

Et qui n'amène rien, puisque c'était déjà ok (enfin, presque).

Au passage, pour les modos : on dirait bien que ce sujet a été amputé d'au moins un message, sinon je ne comprends pas ce que fait ici le mien sous le numéro #3.
__________________
Il court en ce moment une espèce de grippe, mais elle ne court pas très vite, car on peut l'attraper sans courir.
droggo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2012, 02h47   #7
Dr.Mimo
Invité de passage
 
Homme George Klarckson
Étudiant
Inscription : mars 2012
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme George Klarckson
Localisation : Algérie

Informations professionnelles :
Activité : Étudiant
Secteur : Tourisme - Loisirs

Informations forums :
Inscription : mars 2012
Messages : 10
Points : 3
Points : 3
Ton code est correct, il marche avec moi tout correctement.
Dr.Mimo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 13h13.


 
 
 
 
Partenaires

Hébergement Web