How to read an input in the loop loop [closed]

0

I am a beginner in C. I need the program below to read the number entered in the console and give the user tips 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;
        }
    }
}
    
asked by anonymous 01.09.2015 / 19:58

4 answers

3

As I said @Daniel Gomes, remove the single quotes. For this type of construction where the loop must be repeated 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);
    }
    
01.09.2015 / 20:13
3

By taking the simple quotation marks, your code has usually run 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:

    
01.09.2015 / 20:19
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");
        }
    }
}
    
01.09.2015 / 20:07
-2

Try removing the quotation marks from your case: - > When you do this you ask the to case more or less this:  "Case, compare what you have in my Switch with the '1' character." The problem is this, in doing this you are not compared 1 with '1', but 1 with a value of the ASCII table that represents the character '1'. Understood?

    
01.09.2015 / 23:25