nombre d'Amstrong
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

nombre d'Amstrong



  1. #1
    dalida1111

    nombre d'Amstrong


    ------

    Bonsoir
    je veux ecrire un programme qui détermine les nombres d'Amstrong compris entre 100 et 600
    on appelle nombre d 'Amstrong ,tout nombre entier égal à la somme des cubes de ses chiffres
    exemple : 153 = 1^3 +5^3 + 3^3
    ( ^ veut dire à la puissance )

    Code:
    Algorithme : Amstrong;
    
    var n,r,s<-0 : entiers;
    
    debut
    
    faire 
    afficher ( " un nombre svp");
    lire (n);
    r<-n mod 10;
    r<- r*r*r;
    s<-s+r;
    n<-n/ 10 ;
    si ( n=s) alors 
    afficher ("le nombre d amstrong :",n);
    fin si 
    tant que ( n<100 ou n >600);
    fin tant que
    fin
    c bien ça??
    autre chose svplé , comment peut on obtenir des nombres aléatoire entre 0 et 100 en algo ?? je ne sais pas comment résoudre ce problème e

    merci de m avoir aidée

    -----

  2. #2
    Tryss

    Re : nombre d'Amstrong

    Non, ton algorithme n'est pas bon.

    Si je l'exécute sur n=153, ça me donne :

    r <- 3
    r <- 27
    s <- 27
    n <- 15
    le si n'est pas vérifié
    Et ensuite comme 15<100, on boucle indéfiniement sur une boucle qui ne fait rien ^^

    Tu as une partie du truc correct mais :
    1) il faut que tu boucle tant que n>0 pour additionner tout les cubes des chiffres (ici tu n'additionne que le cube de l'unité)
    2) il faut que tu fasses une boucle (qui englobe ce qui précède) pour tester une à une toutes les valeurs de n comprises entre 100 et 600

    Sinon, l'écriture d'algorithme avec des pseudolangage n'est pas fixée... donc pour dire "je tire un nombre entre 100 et 600", on peut par exemple écrire "random(100,600)" ou "alea(100,600)"

  3. #3
    dalida1111

    Re : nombre d'Amstrong

    Merci Tryss de m'avoir répondue
    je refais mon code
    Code:
    Algorithme : Amstrong;
    
    var n,r,s<-0 : entiers;
    
    debut
    
    faire 
    afficher ( " un nombre svp");
    lire (n);
    tant que (n<0); /* on redemande la saisie si le  nombre saisi  n'est pas strictement positif*/
    
    tant que (n>0) faire 
    
    r<-n mod 10;
    r<- r*r*r;
    s<-s+r;
    n<-n/ 10 ;
    fin tant que 
    si ( n=s) alors 
    afficher ("le nombre d amstrong :",n);
    fin si 
    fin
    mais pour que le nombre soit compris entre 100 et 600? je ne sais pas comment ajouter cette condition?!
    Dernière modification par dalida1111 ; 01/12/2011 à 22h45.

  4. #4
    Tryss

    Re : nombre d'Amstrong

    En fait ici ton programme te dis bien si un nombre que tu as entré est un nombre d'amstrong. (avec une petite erreur un peu subtile : ton n vaut 0 à la fin du calcul, il ne peut donc pas être égal à s : il faut sauvegarder la valeur de n au début)

    Ensuite, c'est bien, tu as résolu une partie du problème mais tu veux tester tout les nombres compris entre 100 et 600, il suffit donc de faire une boucle qui englobe tout ce que tu as fait précédement:

    Code:
    pour k=100 à 600
       n<-k
    // ton programme qui teste si le nombre est un nombre d'amstrong :
       s<-0
       tant que (n>0) faire 
          r<-n mod 10;
          r<- r*r*r;
          s<-s+r;
          n<-n/ 10 ;
       fin tant que 
       si ( k=s) alors 
          afficher ("le nombre d amstrong :",k);
       fin si 
    // fin du programme de test
    fin pour

  5. A voir en vidéo sur Futura
  6. #5
    invite4492c379

    Re : nombre d'Amstrong

    Hello,

    n'oublie pas d'indenter ton code (tout comme Tryss) ... il sera bien plus lisible (surtout si en plus tu ajoutes des commentaires).

    En algo, la syntaxe reste relativement libre ... ce n'est pas un programme dont la syntaxe est stricte. Le tout est de rester comprensible.
    Pour un nombre aléatoire, il te suffit par exemple d'écrire :
    Code:
    // Une fontion qui renvoie 0 pour pile et 1 pour face
    Fonction PileOuFace() : entier
    Début
        // Aléa est une fonction qui renvoie un réel aléatoire  compris entre 0 et 1
        si (Aléa()<0.5) alors
            renvoyer 0
        sinon
            renvoyer 1
        fin si
    Fin
    ou si tu décides d'utiliser une structure de données
    Code:
    Énumération Toss {P, F}
    
    Fonction PileOuFace() : Toss
    Début
        // Random est une fonction qui renvoie aléatoirement 0 ou 1
        si (Random()=1)
            renvoyer P
        sinon
            renvoyer F
        fin si
    Fin.

  7. #6
    dalida1111

    Re : nombre d'Amstrong

    Merci infiniment Tryss et Photon57 de m'avoir répondue

    mnt je suis bloqueé sur deux exercices d algorithme ;

    le premier consiste à ecrire un programme qui lit une chaine de caractère puis affiche son inverse ( sans utiliser les fonctions)
    si par exemple la chaine entrée est " joli" l'algorithme doit afficher "iloj"

    le deuxième consiste à vérifier si la chaine de caractère est un plaindrome ou non
    exemple AZAZ est un palindrome


    merci

  8. #7
    invite4492c379

    Re : nombre d'Amstrong

    Le problème «renverser la chaîne» soulève plusieurs points :

    * il existe une structure de donnée (un type) qui représente une chaîne de caractères. Il y a plusieurs fonctions qui manipulent ces chaînes comme par exemple longueur(str) qui te donne la longueur de la chaîne str. Tu peux aussi considérer une chaîne comme un tableau de caractères et dire que str[4] te renvoie le 4ème caractère de la chaîne ou utiliser la fonction caractère(str,i) qui te renvoie le ième caractère de la chaîne str. Tout cela est libre tant que c'est compréhensible.
    Quand tu écris un algo avec l'intention de l'implémenter dans un langage particulier tu utiliseras préférentiellement l'une ou l'autre de ces notations.

    * il est important que tu te mettes aux fonctions, sans ça pas de programmation.



    Remarque : AZAZ n'est pas un palindrome.

  9. #8
    dalida1111

    Re : nombre d'Amstrong

    merci
    j essaierai de le faire ..

Discussions similaires

  1. [Génétique] Nombre de gènes et nombre de protéines chez l'Humain ?
    Par invite23b5ba7c dans le forum Biologie
    Réponses: 6
    Dernier message: 29/11/2010, 22h49
  2. Cherche astuce pour trouver le nombre de diviseur naturel d'un nombre
    Par invitefb7818c9 dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 27/12/2009, 12h23
  3. Nombre de décimales correctes dans un estimation du nombre pi
    Par Seirios dans le forum Mathématiques du supérieur
    Réponses: 6
    Dernier message: 29/10/2009, 22h42
  4. Passage d'un nombre de cas fini à un nombre infini.
    Par neokiller007 dans le forum Epistémologie et Logique (archives)
    Réponses: 20
    Dernier message: 10/03/2008, 15h47
  5. nombre de diviseurs premiers positifs d un nombre
    Par invite19022c72 dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 23/09/2007, 17h08