-2
votes

Comment obtenir ce programme pour sauter la fonction du commutateur afin qu'il ne produise pas de zéros) devant une entrée plus petite

Je ne peux pas comprendre comment sauter les commutateurs inutiles.

Si essayé de remplacer continue avec des pauses et si d'autres instructions qui seraient malheureusement simplement l'arrêtez au premier numéro au lieu de sauter des commutateurs. P>

            if ( number > 0 && number < 10000 ) {
                switch ( thou_place ) {
                case ( 0 ):
                    printf("zero ");

                    break;
                    case ( 1 ):
                    printf("one ");

                    break;
                    case ( 2 ):
                    printf ("two ");

                    break;
                    case ( 3 ):
                    printf ("three ");

                    break;
                    case ( 4 ):
                    printf ("four ");

                    break;
                    case ( 5 ):
                    printf ("five ");

                    break;
                    case ( 6 ):
                    printf("six ");

                    break;
                    case ( 7 ):
                    printf ("seven ");

                    break;
                    case ( 8 ):
                    printf ("eight ");

                    break;
                    case ( 9 ):
                    printf ("nine ");

                    break;
                }   


                switch ( hun_place ) {
                case ( 0 ):
                    printf("zero ");

                    break;
                    case ( 1 ):
                    printf("one ");

                    break;
                    case ( 2 ):
                    printf ("two ");

                    break;
                    case ( 3 ):
                    printf ("three ");

                    break;
                    case ( 4 ):
                    printf ("four ");

                    break;
                    case ( 5 ):
                    printf ("five ");

                    break;
                    case ( 6 ):
                    printf("six ");

                    break;
                    case ( 7 ):
                    printf ("seven ");

                    break;
                    case ( 8 ):
                    printf ("eight ");

                    break;
                    case ( 9 ):
                    printf ("nine ");

                    break;
                }       


                switch ( ten_place ) {
                case ( 0 ):
                    printf("zero ");

                    break;
                    case ( 1 ):
                    printf("one ");

                    break;
                    case ( 2 ):
                    printf ("two ");

                    break;
                    case ( 3 ):
                    printf ("three ");

                    break;
                    case ( 4 ):
                    printf ("four ");

                    break;
                    case ( 5 ):
                    printf ("five ");

                    break;
                    case ( 6 ):
                    printf("six ");

                    break;
                    case ( 7 ):
                    printf ("seven ");

                    break;
                    case ( 8 ):
                    printf ("eight ");

                    break;
                    case ( 9 ):
                    printf ("nine ");

                    break;
                }           


1 commentaires

Pouvez-vous dire s'il vous plaît comment avez-vous initialisé thou_place , hun_place et ten_place .


4 Réponses :


1
votes

Le problème est dans votre logique. Par exemple, vous devez imprimer "zéro" en milliers de personnes uniquement si le nombre lui-même est supérieur à 1000.

solution simple pour cela dans Case 0 code>: P>

switch(thou_place) {
    case ( 0 ):
        if(number > 1000)
            printf("zero ");

        break;

    ...
}


0 commentaires

1
votes

Conceptuellement, ce dont vous avez besoin est le programme de sortie un mot pour chaque chiffre de la représentation décimale du nombre. Notez la réplication que vous avez dans votre code? Vous devriez Ne pas répéter vous-même et le langage C (avec la plupart des autres) fournit une construction faire juste que: des boucles.

au lieu du si (numéro> 0 && numéro <10000) , vous pouvez faire une boucle (qui fait également un chèque) et, pour chaque étape ( IE dans le corps de la boucle), utilisez votre interrupteur .

Le pseudo-code va: xxx

Pour améliorer la clarté, vous pouvez même créer votre commutateur une fonction. En outre, pour en apprendre davantage (c'est un peu plus avancé), vous pouvez envisager d'utiliser un char * ** digit_words vous permettant de remplacer l'ensemble du commutateur avec un printf ("% s", chiffre_words [chiffre]) (mais faites attention à la vérification de la plage!).

Ceci résout votre problème; La mise en œuvre de C réelle est laissée comme un exercice.


1 commentaires

Pourquoi toutes les réponses à cette question sont-elles décrites?



0
votes

@picto déjà mentionné le principe sec.

Je suggérerais une solution différente pour le problème global: xxx

procédure:

entrée : -1234567890 xxx


0 commentaires

-2
votes
if (number > 0 && number < 10000)
    {
        switch (thou_place)
        {
        case (1) :
            printf("one ");
            break;
        case (2) :
            printf("two ");
            break;
        case (3) :
            printf("three ");
            break;
        case (4) :
            printf("four ");
            break;
        case (5) :
            printf("five ");
            break;
        case (6) :
            printf("six ");
            break;
        case (7) :
            printf("seven ");
            break;
        case (8) :
            printf("eight ");
            break;
        case (9) :
            printf("nine ");
            break;
        }
        switch (hun_place)
        {
        case (0) :
            if (thou_place != 0)
                printf("zero ");
                break;
        case (1) :
            printf("one ");
            break;
        case (2) :
            printf("two ");
            break;
        case (3) :
            printf("three ");
            break;
        case (4) :
            printf("four ");
            break;
        case (5) :
            printf("five ");
            break; 
        case (6) :
            printf("six ");
            break;
        case (7) :
            printf("seven ");
            break; 
        case (8) :
                printf("eight ");
                break; 
        case (9) :
                printf("nine ");
                break;
       }
       switch (ten_place)
       {
           case (0) :
           {

                 if ((thou_place == 0) && (hun_place == 0))  {

                 }
                 else if (thou_place == 0 && hun_place != 0){
                     printf("zero ");
                     break;
                 }
                 else {
                     printf("zero ");
                     break;
                 }
            }

            case (1) :
               printf("one ");
               break;
           case (2) :
               printf("two ");
               break;
           case (3) :
              printf("three ");
              break;
           case (4) :
              printf("four ");
              break;
          case (5) :
              printf("five ");
              break;
          case (6) :
              printf("six ");
              break;
         case (7) :
             printf("seven ");
             break;
         case (8) :
             printf("eight ");
             break;
         case (9) :
             printf("nine ");
             break;
         }
    }

1 commentaires

Pourriez-vous expliquer ce que vous avez changé dans le code et pourquoi résout-il le problème?