Ir ao conteúdo

Posts recomendados

Postado
 

Olá, sou iniciante em c, fui fazer um exercicio e tive dificuldades com o switch case, postarei o exercicio e o meu codigo
Exercicio :  O programa deve imprimir uma pergunta do tipo Quanto e 6 vezes 7? O aluno deve digitar a resposta. Seu programa deve examinar a resposta do aluno. Se ela estiver correta, o programa deve imprimir aleatoriamente um desses 4 comentarios: "Muito bem! Excelente! Bom trabalho! Certo. Continue assim!" e fazer outra pergunta de multiplicação. Se a resposta estiver errada, o programa deve imprimir aleatoriamente um desses 4 comentarios "Nao. Tente novamente, por favor.  Errado. Tente mais uma vez. Nao desista! Nao. Continue tentando." e então deixar que o aluno fique tentando acertar a mesma pergunta repetidamente até por fim conseguir.  


Usando o if/else da certo mas eu quero resolver isso usando o switch case.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>  

main ()
{
    int a, x, z, resultado, controle, i, b;
    srand(time(NULL));
    i = 0;
    Beginning:
    b = ( 1 + (rand() % 4));
    a = ( 1 + (rand() % 4));
    do
    {
        if (i > 0)
        {
            switch ( a )
            {
                case '1':
                    printf("Nao. Tente novamente, por favor.\n");
                    break;

                case '2':
                    printf("Errado. Tente mais uma vez.\n");
                    break;

                case '3':
                    printf("Nao Desista!\n");
                    break;

                case '4':
                    printf("Nao. Continue tentando.\n");
                    break;

                default:
                    printf("Erro Desconhecido.\n");
                    break;
            }

        }
    x = ( 1 + (rand() % 10));
    z = ( 1 + (rand() % 10));
    printf("Quanto e %d vezes %d ", x, z);
    scanf("%d", &resultado);
    i++;
    } while (resultado != x * z);
    switch ( b )
            {
                case '1':
                    printf("Excelente!\n");
                    break;

                case '2':
                    printf("Muito bem!\n");
                    break;

                case '3':
                    printf("Bom trabalho!\n");
                    break;

                case '4':
                    printf("Certo. Continue assim! \n");
                    break;

                default:
                    printf("Erro Desconhecido.\n");
                    break;
            }
    printf("Se voce deseja outra conta digite -1, senao pressione 1.\n");
    scanf("%d", &controle);
    if (controle == -1)
        goto Beginning;

    return 0;
}

 

Postado

Quando você coloca o número entre aspas simples, como '1', '2', '3', etc,  está indicando o caractere (char) que representa o número em questão, não o número inteiro (int) em si... Logo nos cases do switch do seu programa deve-se usar o número sem as aspas, pois a e b são números inteiros, não chars...

 

Ex:

 

int numero;

//Lógica para atribuir valores a variavel numero

switch (numero){
  case 1:
    //Lógica se numero == 1
    break;
  case 2:
    //Lógica se numero == 2
    break;
  default:
    //Lógica se numero não for igual a nenhum dos valores
}

 

  • Curtir 1
Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!