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

 C Discussion :

convertisseur de nombres en mots


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut convertisseur de nombres en mots
    salut le tp est de realiser un programme qui convertit les chiffres en mots.

    j ai deja comence mais j ai un probleme.

    par exemple les nombres de 19 a 99 : j ai utilise le mod et le div
    par exemple 23 : 23/10 donne : 2 et 23%10 donne 3
    mnt je dois faire un switch pour les resultats du mod et div et j arrive pas :

    voila mon 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(void)
    {
    int  zahl=0  ;
    int zehner , rest ;
    		printf (" gib eine Zahl \n  ") ;
                scanf("%d", &zahl);
     
    	switch (zahl)
    {
    case 0:
      printf("zero\n");
      break;
    case 1:
      printf("one\n");
      break;
    case 2:
      printf("two\n");
      break;
    case 3:
      printf("three\n");
      break;
    case 4:
      printf("four\n");
      break;
    case 5:
      printf("five\n");
      break;
    case 6:
      printf("six\n");
      break;
    case 7:
      printf("seven\n");
      break;
    case 8:
      printf("eight\n");
      break;
    case 9:
      printf("nine \n");
     
      break;
    default:
      printf("rien  ");
      break;
    }
     
     
    		do
    		{  
    			zahl/10 ; zahl%10  ;
    				zehner  = zahl/10 ;
    			       rest = zahl%10 ;
    	} while ( zahl <99 && zahl>10 ) ;
     
     
    	switch (zehner)
    	{
    	case 2:
    	  zehner=twenty ;
    	  break;
    	case 3:
    	  zehner = thirty ;
    	  break;
    	case 4:
    	  zehner = forty ;
    	  break;
    	case 5:
    	  zehner=fifty ;
    	  break;
    	case 6:
    	  zehner =sixty ;
    	  break;
    	case 7:
    	  zehner=seventy;
    	  break;
    	case 8:
    	 zehner = eighty ;
    	  break;
    	case 9:
    	 zehner= ninety;
    	  break;
     
    	default:
    	  printf("rien  ");
    	  break;
    }
     
    	}

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Tu devrais plutôt définir un tableau de chaînes, et utiliser ton nombre entier comme index :

    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
    #include <stdio.h>
     
    int main (void)
    {
        int x;
        const char * tableau [] = { "zero","one","two","three","four","five",
                                    "six","seven","eight","nine","ten"        };
     
        printf ("%s\n",tableau[1]);
        printf ("%s\n",tableau[3]);
        printf ("%s\n",tableau[7]);
     
        x=5;
        printf ("%s\n",tableau[x]);
     
        return 0;
    }

  3. #3
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Vérifie ta boucle, là tu fais une boucle infinie.
    Tu ne modifies jamais la valeur de zahl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    do
    {  
    	zahl/10 ; zahl%10  ;
    	zehner  = zahl/10 ;
    	rest = zahl%10 ;
    } while ( zahl <99 && zahl>10 ) ;
    Plus tu pédales moins fort, moins t'avances plus vite.

  4. #4
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci a vous , je vais essayer d etablir le code , et je vais le poster ici quand c est fini. mercie encore

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Tu devrais plutôt définir un tableau de chaînes, et utiliser ton nombre entier comme index :

    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
    #include <stdio.h>
     
    int main (void)
    {
        int x;
        const char * tableau [] = { "zero","one","two","three","four","five",
                                    "six","seven","eight","nine","ten"        };
     
        printf ("%s\n",tableau[1]);
        printf ("%s\n",tableau[3]);
        printf ("%s\n",tableau[7]);
     
        x=5;
        printf ("%s\n",tableau[x]);
     
        return 0;
    }
    est ce que je peux utiliser une boucle ou une condition avant le printf ??
    par exemple si le mod = 3 printf tableau[3] que je l ai deja defini par therty??
    quesque tu veux dire par index.


    merci

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        const char * tableau [] = { "zero","one","two","three","four","five",
                                    "six","seven","eight","nine","ten"        }
    Va generer un tableau de la forme :

    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
    21
    22
    23
    24
    25
    26
    27
     
    Tableau
    o-------o---------o
    |Indice | Contenu |
    o-------o---------o
    |    0  |   zero  | 
    o-------o---------o
    |   1   |    one  | 
    o-------o---------o
    |   2   |    two  | 
    o-------o---------o
    |   3   |  three  | 
    o-------o---------o
    |   4   |   four  | 
    o-------o---------o
    |   5   |    five | 
    o-------o---------o
    |   6   |     six | 
    o-------o---------o
    |   7   |   seven | 
    o-------o---------o
    |   8   |   eight | 
    o-------o---------o
    |   9   |    nine | 
    o-------o---------o
    |   10  |      \n | 
    o-------o---------o
    Pour l'indice 10 je ne suis sur.

    L'avantage, c'est qu'en faisant ceci :

    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
     
    #include <stdio.h>
     
    int main (void)
    {
        int x = 20;
        const char * tableau [] = { "zero","one","two","three","four","five",
                                    "six","seven","eight","nine","ten"        };
     
        /* Quelque soit x, on affichera le chiffre des unité */
        printf ("%s\n",tableau[x%10]);
     
     
        return 0;
    }
    C'est cela que voulait Obsidian par "se servir du nombre comme de l'index".

  7. #7
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    @SofEvans : Comme tu vas de "zero" à "ten" l'indice 10 contient "ten".
    Par contre l'indice 11 n'appartient pas au tableau
    Donc au final ça donne :
    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
    21
    22
    23
    24
    25
    26
    Tableau
    o-------o---------o
    |Indice | Contenu |
    o-------o---------o
    |    0  |   zero  | 
    o-------o---------o
    |   1   |    one  | 
    o-------o---------o
    |   2   |    two  | 
    o-------o---------o
    |   3   |  three  | 
    o-------o---------o
    |   4   |   four  | 
    o-------o---------o
    |   5   |    five | 
    o-------o---------o
    |   6   |     six | 
    o-------o---------o
    |   7   |   seven | 
    o-------o---------o
    |   8   |   eight | 
    o-------o---------o
    |   9   |    nine | 
    o-------o---------o
    |   10  |    ten  | 
    o-------o---------o
    Et puis pareil avec le modulo, si tu veux afficher "ten" il faudra faire un modulo 11

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     printf ("%s\n",tableau[x%11]);
    Mais vu le code du PO, le ten ne sert à rien donc le modulo 10 suffit
    Plus tu pédales moins fort, moins t'avances plus vite.

  8. #8
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Oui, autant pour moi, j'ai cru que ce tableau ne prenait que des chiffres. Donc, pas de '\0' a la fin.

Discussions similaires

  1. Trouver le nombre de mots
    Par acik59 dans le forum C
    Réponses: 13
    Dernier message: 06/06/2007, 23h11
  2. [TSQL] calculer le nombre de mot dans une cellule
    Par ricachu dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 31/07/2006, 11h12
  3. Recherche le nombre de mots dans un fichier
    Par peppena dans le forum Linux
    Réponses: 2
    Dernier message: 19/04/2006, 10h46
  4. Réponses: 13
    Dernier message: 16/11/2005, 13h15
  5. Compter nombre de mots dans une chaîne.
    Par xVINCEx dans le forum C++
    Réponses: 22
    Dernier message: 24/11/2004, 13h33

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