IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Pascal Discussion :

Afficher tous les diviseurs d'un nombre


Sujet :

Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Points : 20
    Points
    20
    Par défaut Afficher tous les diviseurs d'un nombre
    Bonjour

    Voilà, je suis vraiment bloqué pour résoudre un exercice.
    On demande d'écrire un algorithme à l'aide d'une boucle qui affiche tous les diviseurs d'un nombre, exceptés 1 et lui-même.
    Exemple : 30 - les diviseurs sont 2, 3, 5, 6, 10, 15.
    Moi j'ai fait comme ça mais je crois bien qu'il manque quelque chose.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert confirmé
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Points : 4 015
    Points
    4 015
    Par défaut
    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

  3. #3
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    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.
    Si les cons volaient, il ferait nuit à midi.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    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).
    Si les cons volaient, il ferait nuit à midi.

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    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.
    Si les cons volaient, il ferait nuit à midi.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Mars 2012
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Ton code est correct, il marche avec moi tout correctement.

  8. #8
    Candidat au Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Février 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2013
    Messages : 1
    Points : 2
    Points
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    program ff;
    uses wincrt;
    var n,i:integer;
    begin
      readln(n);
      for i:=1 to n do
       begin
        if ((n mod i =0) and (i<>n) ) then
        begin      
     
         writeln(i);
         end;
         end;
         end.

  9. #9
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Joe,

    Citation Envoyé par israr Voir le message
    program ff;
    uses wincrt;
    var n,i:integer;
    begin
    readln(n);
    for i:=1 to n do
    begin
    if ((n mod i =0) and (i<>n) ) then
    begin

    writeln(i);
    end;
    end;
    end.
    Belle tentative, mais ton programme est faux, il se trompe.

    Je te laisse trouver pourquoi.
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. [TPW] Afficher tous les nombres parfaits dans l'intervalle 1..99999
    Par fatma2013 dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 30/10/2013, 18h45
  2. [Exercice] Afficher tous les nombres
    Par zlatino dans le forum Pascal
    Réponses: 7
    Dernier message: 05/03/2009, 19h42
  3. afficher tous les champs d'une table
    Par julio84 dans le forum ASP
    Réponses: 8
    Dernier message: 19/01/2005, 10h31
  4. Afficher tous les champs d'une table avec dbexpress et MySQL
    Par LHT dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/06/2004, 17h11
  5. Afficher tous les fichiers .htm du dd
    Par neo4010 dans le forum Linux
    Réponses: 3
    Dernier message: 20/01/2004, 13h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo