How to read an input in the loop

Asked

Viewed 255 times

0

I’m a beginner in C. I need the program below to read the number typed in console and give tips to the user until he gets it right:

#include <stdio.h>

int main ()
{
    int num;
    printf("Informe um número entre 0 e 10:\n");
    scanf("%d",&num);

    while (num!=7)
    {
        printf("Escolha outro valor:");
        scanf("%d",&num);
        switch(num)
        {
            case '0':
                printf("Tente outro numero\n");
                break;
            case '1':
                printf("Escolha outro valor\n");
                break;
            case '2':
                printf("Esta longe, tente outro\n");
                break;
            case '3':
                printf("O numero e maior\n");
                break;
            case '4':
                printf("Tente novamente\n");
                break;
            case '5':
                printf("Esta proximo, mas ainda nao e este\n");
                break;
            case '6':
                printf("Ja pensou em tentar um numero impar?\n");
                break;
            case '8':
                printf("Esta proximo\n");
                break;
            case '9':
                printf("Tente um valor menor\n");
                break;
            case '10':
                printf("E um numero menor\n");
                break;
            default:
                printf("Voce acertou");
                break;
        }
    }
}
  • Dear @user31057, read on tour and edit your question succinctly, so the community can help with your doubt but not do your exercise.

  • What is your doubt?

  • When I go to compile I can’t get him to repeat

  • Sorry for the ignorance (I’m new to programming), but it is no longer among keys?

  • Just take out the Simple Quotes that will work.

4 answers

3

As @Daniel Gomes said, take out the simple quotes. For this type of construction in which the loop should repeat at least once use do{} while(); and avoid unnecessary checking:

#include <stdio.h>
    int main ()
    {
        int num;

        do
        {

            printf("Informe um número entre 0 e 10:\n");
            scanf("%d",&num);

            switch(num)
            {
                case 0:
                printf("Tente outro numero\n");
                case 1:
                printf("Escolha outro valor\n");
                break;
                case 2:
                printf("Esta longe, tente outro\n");
                break;
                case 3:
                printf("O numero e maior\n");
                break;
                case 4:
                printf("Tente novamente\n");
                break;
                case 5:
                printf("Esta proximo, mas ainda nao e este\n");
                break;
                case 6:
                printf("Ja pensou em tentar um numero impar?\n");
                break;
                case 8:
                printf("Esta proximo\n");
                break;
                case 9:
                printf("Tente um valor menor\n");
                break;
                case 10:
                printf("E um numero menor\n");
                default:
                printf("Voce acertou");
            }
        }while(num != 7);
    }

3

Apart from the simple quotes, your code ran normally here.

#include <stdio.h>

int main ()
{
    int num;
    printf("Informe um número entre 0 e 10:\n");
    scanf("%d",&num);

    while(num!=7)
    {
        printf("Escolha outro valor:");
        scanf("%d",&num);

        switch(num)
        {
            case 0:
                printf("Tente outro numero\n");
            case 1:
                printf("Escolha outro valor\n");
                break;
            case 2:
                printf("Esta longe, tente outro\n");
                break;
            case 3:
                printf("O numero e maior\n");
                break;
            case 4:
                printf("Tente novamente\n");
                break;
            case 5:
                printf("Esta proximo, mas ainda nao e este\n");
                break;
            case 6:
                printf("Ja pensou em tentar um numero impar?\n");
                break;
            case 8:
                printf("Esta proximo\n");
                break;
            case 9:
                printf("Tente um valor menor\n");
                break;
            case 10:
                printf("E um numero menor\n");
            default:
                printf("Voce acertou");
        }
    }
}

Running:

Execução do programa

0

The scanf is out of the loop. In order for each check of the number, it asks the user to type again, it must be next to the loop:

int main ()
{
    int num;

    while(num!=7)
    {

        printf("Informe um número entre 0 e 10:\n");
        scanf("%d",&num);

        switch(num)
        {
            case 0:
            printf("Tente outro numero\n");
            case 1:
            printf("Escolha outro valor\n");
            break;
            case 2:
            printf("Esta longe, tente outro\n");
            break;
            case 3:
            printf("O numero e maior\n");
            break;
            case 4:
            printf("Tente novamente\n");
            break;
            case 5:
            printf("Esta proximo, mas ainda nao e este\n");
            break;
            case 6:
            printf("Ja pensou em tentar um numero impar?\n");
            break;
            case 8:
            printf("Esta proximo\n");
            break;
            case 9:
            printf("Tente um valor menor\n");
            break;
            case 10:
            printf("E um numero menor\n");
            default:
            printf("Voce acertou");
        }
    }
}
  • Like the scanf("%d",&num); is out of the loop if he has two?

-2

Try removing the quotes from your case: -> When you do this you ask the case more or less like this: "Case, compare what you have on my Switch to the '1' character". The problem is this, when doing this you are not compared 1 with '1', but 1 with an ASCII table value that represents the character '1'. Got it?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.