Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Limitar o usuário

Eu gostaria de limitar o usuário. Queria que o maior número que ele pudesse digitar fosse 10 e que o programa desse loop. Acontece que se o usuário dá um número maior que 10 a mensagem aparece 10 vezes e o programa termina. Sei que é um erro de lógica. Alguém pode ajudar?

int main() {
    int numeroJogador;

    printf("Tabuada! Quer a tabuada de qual numero?\n");
    scanf("%d", &numeroJogador);


    for(int multiplicador = 1; multiplicador <= 10; multiplicador++){

        if(numeroJogador > 10){

            printf("Nao pode escolher numero maior que 10");
            continue;
        }

        int resultado = numeroJogador * multiplicador;
        printf("%dx%d=%d\n", numeroJogador, multiplicador, resultado);


    }

}
4 respostas

Olá, Vc pode resolver trocando o continue do seu teste por um break:

int main() {
    int numeroJogador;

    printf("Tabuada! Quer a tabuada de qual numero?\n");
    scanf("%d", &numeroJogador);


    for(int multiplicador = 1; multiplicador <= 10; multiplicador++){

        if(numeroJogador > 10){

            printf("Nao pode escolher numero maior que 10");
            break;
        }

        int resultado = numeroJogador * multiplicador;
        printf("%dx%d=%d\n", numeroJogador, multiplicador, resultado);


    }

}

Ou Você pode colocar a pergunta if fora do for e só entrar se número for menor que 10

#include <stdio.h>

int main()
{
    int numeroJogador = 0;
    printf("Tabuada! Quer a tabuada de qual numero?\n");
    scanf("%d", &numeroJogador);

    if (numeroJogador > 10) {
        printf("Nao pode escolher numero maior que 10");
    } else {
        for (int multiplicador = 1; multiplicador <= 10; multiplicador++) {

            if (numeroJogador > 10) {

                printf("Nao pode escolher numero maior que 10");
                break;
            }

            int resultado = numeroJogador * multiplicador;
            printf("%dx%d=%d\n", numeroJogador, multiplicador, resultado);
        }
    }

    return 0;
}

OBS: Coloca o return 0 no final do seu código. Afinal sua função main tem um retorno inteiro.

Oi Diego. Obrigado pela ajuda. A parte de aparecer a mensagem de erro está ok, mas eu também queria que depois da mensagem de erro, o programa pedisse para o usuário digitar o número novamente. Não sei como fazer isso acontecer

Obrigado pela diga do return 0, não tinha isso nos vídeos

solução!

Olá, Uma forma de fazer isso é com while, abaixo um exemplo, tem outras formas de fazer:

#include <stdio.h>

int main()
{
    int numeroJogador = -1;

    while (numeroJogador != 0) {
        printf("Tabuada! Quer a tabuada de qual numero? [digitr 0 para sair]\n");
        scanf("%d", &numeroJogador);

        if  (numeroJogador > 10)  {
            printf("Nao pode escolher numero maior que 10\n\n");
        } else if (numeroJogador != 0) {
            for (int multiplicador = 1; multiplicador <= 10; multiplicador++) {
                int resultado = numeroJogador * multiplicador;
                printf("%dx%d=%d\n", numeroJogador, multiplicador, resultado);
            }
        }
    }

    return 0;
}

Muito obrigado! Acho que agora entendi a lógica. Vou usar ela no futuro :)