Probleme de code en C

Résolu
omaflak Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -  
omaflak Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, j'ai fait une petite fonction en C qui a pour but de me donner le nombre de chiffre qu'il y a dans un nombre. Le probleme c'est que quel que soit le chiffre elle me renvoie la meme valeur : 10 :(

Je suis debutant en C est ce que quelqu'un pourrait m'aider ?
voila ma fonction :

int len(int nombre)
{
int i=0;

while (nombre>1)
{
nombre=nombre/10;
i++;
}
return i;
}

Merci d'avance :)

9 réponses

  1. Submin Messages postés 463 Statut Membre 226
     
    Bonjour,

    C'est cette parti qui plante,

    La variable nombre est un entier, tant que nombre n'est pas égal a 10 il n'arrivera pas a avoir nombre = 1

    Tu divise un entier par 10.... Le résultat sera donc un entier

    nombre=nombre/10;

    Exemple, 10 / 3 = 3 pour le langage C
    et 3/10 = 0 pour le langage C

    essai d'utiliser des floats à la place et je pense que tu n'aura plus de problème

    Source : https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/14337-une-bete-de-calcul#ss_part_1

    Essai cette méthode

    int len(float nombre)   
    {   
           int i=1;   
           while (nombre>=10)   
           {   
                  nombre=nombre/10;   
                  i++;   
           }   
           return i;   
    }  


    J'espère que ça marchera mais normalement oui....
    1
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      La variable nombre est un entier, tant que nombre n'est pas égal a 10 il n'arrivera pas a avoir nombre = 1
      Certes, sauf qu'il a mis > 1 et non = 1. Du coup, son algorithme fonctionne.
      0
  2. Utilisateur anonyme
     
    Salut ;-),

    Utilise les balises <code*> ton code </code*>, ce sera plus lisible :-)

    (enlève les étoiles pour ton code, c'était pour ne pas que la balise s'applique)

    nombre n'est pas défini, il ne vaut donc rien.
    1
    1. Submin Messages postés 463 Statut Membre 226
       
      la variable est définie dans la fonction,

      c'est une fonction nommée "len" avec la variable "nombre" entrée en paramètre comme un entier

      Par contre pour les balises de code j'avoue que ça peut être bien de prendre l'habitude ;)
      0
    2. Utilisateur anonyme
       
      n'ai rien dit :-))
      0
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    montre nous comment tu utilises ta fonction, car là je ne vois pas d'erreur.
    1
  4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Bonjour,

    Ta fonction est parfaitement correcte.
    L'erreur vient d'ailleurs. Probablement de la fonction qui appelle len(...);
    Pourrais-tu montrer ton code en entier. Avec les balises code (à droite du bouton souligné).
    1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Kafiristanica Messages postés 266 Date d'inscription   Statut Membre Dernière intervention   28
     
    #include <stdio.h>
    #include <stdlib.h>

    int nombreChiffres ( int nombre ) 
    { 
     int i = 1; 
     if (nombre < 0) 
     { 
      nombre = -nombre; 
     } 
     while (nombre >= 10) 
     { 
      nombre /= 10; 
      i++; 
     } 
    
     return i; 
    } 
      
    int main ( )  
    { 
     int N; 
     printf("Nombre : "); scanf("%d", &N); 
      
     printf("Nombre de chiffres de %d : %d\n", N, nombreChiffres(N)); 
     return 0; 
    }
    
    1
  7. omaflak Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   1
     
    Bonjour, 'Submin merci pour ton aide j'ai fait ce que tu m'as dit mais ca ne marche toujours pas :(
    0
    1. Submin Messages postés 463 Statut Membre 226
       
      Tu as changé ta variable nombre dans ton main() aussi?

      Car sinon ça change rien, ça la considérera toujours comme un entier
      Tu fait rentré une variable entier dans un float, du coup le langage C l'utilise toujours comme un entier (a mona vis ton erreur est la)

      je vais tout de même vérifier le code chez moi
      0
  8. omaflak Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   1
     
    Merci a tout ceux qui m'ont envoyer de bon conseil mais la je bloc :( voila mon code en entier :

    #include <stdio.h>
    #include <stdlib.h>

    int len(int nombre);

    int main(int argc, char *argv[])
    {
    int N;

    printf("N = ");
    scanf("%d", N);

    printf("Nombre de Chiffre = %d\n", len(N));

    return 0;
    }

    int len(int nombre)
    {
    int i=0;

    while (nombre>1)
    {
    nombre=nombre/10;
    i++;
    }
    return i;
    }
    0
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Effectivement l'erreur viet de la fonction appelante.
      scanf("%d", N);
      Il faut mettre &N. Cela doit générer un warning d'ailleurs.
      Et tout devrait rentrer dans l'ordre.
      0
    2. omaflak Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   1
       
      Effectivement ca a marcher :) Merci beaucoup
      0
  9. omaflak Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   1
     
    Et la fonction me renvoie tout le temps le valeur 10 :(
    0
  10. omaflak Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   1
     
    Je comprend a quoi elle sert cette balise code ? Quand j'appuis dessus ya juste ecrit "code code
    0
    1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
       
      Sélectionne ton code source dans la fenêtre avant de cliquer dessus.
      0