Problem with switch inside the While loop

Asked

Viewed 285 times

-1

I would like a help to solve the problem I’m having with the switch inside the loop, it never finalza, stays in an eternal loop. What should I do to solve ?

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

int main ()
{
char nome[50], passatempo2, passatempo4, musica2, musica4, filme2, filme4, vicio2, vicio4;
int op, sexo, idade, idade2, idade3, idade4, passatempo, passatempo3, musica, musica3, filme, filme3, auto_declara, auto_declara2, vicio, vicio3;
int ab, valor_aluguel, quartos, banheiros, proximidade, adicional, ba, valor_aluguel2, quartos2, banheiros2, proximidade2, adicional2, profissao, profissao2;

printf("Ola, seja bem-vindo ao Colega de Quarto, como voce se chama ? ");
fflush(stdin);
scanf("%[^\n]s", &nome);
printf("\n");
printf("O que voce deseja, %s ?\n\n", nome);
printf("1 - Anunciar\n\n");
printf("2 - Procurar\n\n");
scanf("%d", &op);

while(op==1)
{
    printf("\n");

    printf("O que voce vai preencher primeiro %s ?\n\n", nome);
    printf("1 - Perfil\n\n");
    printf("2 - Caracteristicas da residencia\n\n");
    scanf("%d", &ba);
    switch(ba)
    {
    case 1:
        printf("\nFormule seu perfil de acordo com as opcoes abaixo: \n");

        printf("\n");

        printf("---Sexo---\n");
        printf("1 - Masculino\n");
        printf("2 - Feminino\n");
        scanf("%d", &sexo);

        printf("\n");

        printf("---Idade---\n");
        printf("1 - 16 a 19 anos\n");
        printf("2 - 20 a 21 anos\n");
        printf("3 - outro\n");
        scanf("%d", &idade3);
        if (idade3 == 3)
        {
            printf("Quantos anos voce tem ?\n");
            scanf("%d", &idade4);
        }

        printf("\n");

        printf("---Profissao---\n");
        printf("1 - Estudante\n");
        printf("2 - Profissional\n");
        printf("3 - Aposentado\n");
        scanf("%d", &profissao);

        printf("\n");

        printf("---Hobby---\n");
        printf("1 - Ler\n");
        printf("2 - Praticar esportes\n");
        printf("3 - Festar\n");
        printf("4 - Outro\n");
        scanf("%d", &passatempo3);
        if (passatempo3 == 4)
        {
            printf("Qual ?\n");
            scanf("%s", &passatempo3);
        }

        printf("\n");

        printf("---Gosto Musical---\n");
        printf("1 - Rock\n");
        printf("2 - Funk\n");
        printf("3 - Sertanejo\n");
        printf("4 - Outro\n");
        scanf("%d", &musica3);
        if (musica3 == 4)
        {
            printf("Qual ?\n");
            scanf("%s", &musica4);
        }

        printf("\n");

        printf("---Tipo de Filme---\n");
        printf("1 - Acao\n");
        printf("2 - Suspense\n");
        printf("3 - Terror\n");;
        printf("4 - Comedia\n");
        printf("5 - Outro\n");
        scanf("%d", &filme3);
        if (filme3 == 5)
        {
            printf("Qual ?\n");
            scanf("%s", &filme4);
        }

        printf("\n");

        printf("---Voce e---\n");
        printf("1 - Caseira(o)\n");
        printf("2 - Festeira(o)\n");
        printf("3 - Um pouco dos dois\n");
        scanf("%d", &auto_declara2);

        printf("\n");

        printf("---Voce faz uso de---\n");
        printf("1 - Alcool\n");
        printf("2 - Cigarro\n");
        printf("3 - Entorpecentes\n");
        printf("4 - Nenhum\n");
        printf("5 - Outro\n");
        scanf("%d", &vicio3);
        if (vicio3 == 5)
        {
            printf("Qual \n");
            scanf("%s", &vicio4);
        }

        break;
        system("cls");

    case 2:
        printf("\n");

        printf("---Valor do aluguel---\n");
        printf("1 - R$ 250 - R$ 300\n");
        printf("2 - R$ 300 - R$ 350\n");
        printf("3 - R$ 350 - R$ 400\n");
        scanf("%d", &valor_aluguel2);

        printf("\n");

        printf("---Quantidade de quartos na casa---\n");
        printf("1 - 1 Quarto\n");
        printf("2 - 2 Quartos\n");
        printf("3 - 3 Quartos\n");
        scanf("%d", &quartos2);

        printf("\n");

        printf("---Quantidade de banheiros na casa---\n");
        printf("1 - 1 Banheiro\n");
        printf("2 - 2 Banheiros\n");
        printf("3 - 3 Banheiros\n");
        scanf("%d", &banheiros2);

        printf("\n");

        printf("---Proximo de----\n");
        printf("1 - Banco, farmacia, ponto de onibus, supermecado\n");
        printf("2 - Banco, ponto de onibus, supermecado\n");
        printf("3 - Farmacia, ponto de onibus, supermecado\n");
        scanf("%d", &proximidade2);

        printf("\n");

        printf("---Adicional---\n");
        printf("1 - Garagem\n");
        printf("2 - Quintal\n");
        printf("3 - Piscina\n");
        printf("4 - Nenhum\n");
        scanf("%d", &adicional2);

        break;
        system("cls");
    }
}

while(op==2)
{
    printf("\n");

    printf("O que voce vai preencher primeiro %s ?\n\n", nome);
    printf("1 - Perfil\n\n");
    printf("2 - Caracteristicas da residencia\n\n");
    scanf("%d", &ab);
    switch(ab)
    {
    case 1:
        printf("\nFormule seu perfil de acordo com as opcoes abaixo: \n");

        printf("\n");

        printf("---Sexo---\n");
        printf("1 - Masculino\n");
        printf("2 - Feminino\n");
        scanf("%d", &sexo);

        printf("\n");

        printf("---Idade---\n");
        printf("1 - 16 a 19 anos\n");
        printf("2 - 20 a 21 anos\n");
        printf("3 - outro\n");
        scanf("%d", &idade);
        if (idade == 3)
        {
            printf("Quantos anos voce tem ?\n");
            scanf("%d", &idade2);
        }

        printf("\n");

        printf("---Profissao---\n");
        printf("1 - Estudante\n");
        printf("2 - Profissional\n");
        printf("3 - Aposentado\n");
        scanf("%d", &profissao2);

        printf("\n");

        printf("---Hobby---\n");
        printf("1 - Ler\n");
        printf("2 - Praticar esportes\n");
        printf("3 - Festar\n");
        printf("4 - Outro\n");
        scanf("%d", &passatempo);
        if (passatempo == 4)
        {
            printf("Qual ?\n");
            scanf("%s", &passatempo2);
        }

        printf("\n");

        printf("---Gosto Musical---\n");
        printf("1 - Rock\n");
        printf("2 - Funk\n");
        printf("3 - Sertanejo\n");
        printf("4 - Outro\n");
        scanf("%d", &musica);
        if (musica == 4)
        {
            printf("Qual ?\n");
            scanf("%s", &musica2);
        }

        printf("\n");

        printf("---Tipo de Filme---\n");
        printf("1 - Acao\n");
        printf("2 - Suspense\n");
        printf("3 - Terror\n");;
        printf("4 - Comedia\n");
        printf("5 - Outro\n");
        scanf("%d", &filme);
        if (filme == 5)
        {
            printf("Qual ?\n");
            scanf("%s", &filme2);
        }

        printf("\n");

        printf("---Voce e---\n");
        printf("1 - Caseira(o)\n");
        printf("2 - Festeira(o)\n");
        printf("3 - Um pouco dos dois\n");
        scanf("%d", &auto_declara);

        printf("\n");

        printf("---Voce faz uso de---\n");
        printf("1 - Alcool\n");
        printf("2 - Cigarro\n");
        printf("3 - Entorpecentes\n");
        printf("4 - Nenhum\n");
        printf("5 - Outro\n");
        scanf("%d", &vicio);
        if (vicio == 5)
        {
            printf("Qual \n");
            scanf("%s", &vicio2);
        }

        break;
        system("cls");

    case 2:
        printf("\n");

        printf("---Valor do aluguel---\n");
        printf("1 - R$ 250 - R$ 300\n");
        printf("2 - R$ 300 - R$ 350\n");
        printf("3 - R$ 350 - R$ 400\n");
        scanf("%d", &valor_aluguel);

        printf("\n");

        printf("---Quantidade de quartos na casa---\n");
        printf("1 - 1 Quarto\n");
        printf("2 - 2 Quartos\n");
        printf("3 - 3 Quartos\n");
        scanf("%d", &quartos);

        printf("\n");

        printf("---Quantidade de banheiros na casa---\n");
        printf("1 - 1 Banheiro\n");
        printf("2 - 2 Banheiros\n");
        printf("3 - 3 Banheiros\n");
        scanf("%d", &banheiros);

        printf("\n");

        printf("---Proximo de----\n");
        printf("1 - Banco, farmacia, ponto de onibus, supermecado\n");
        printf("2 - Banco, ponto de onibus, supermecado\n");
        printf("3 - Farmacia, ponto de onibus, supermecado\n");
        scanf("%d", &proximidade);

        printf("\n");

        printf("---Adicional---\n");
        printf("1 - Garagem\n");
        printf("2 - Quintal\n");
        printf("3 - Piscina\n");
        printf("4 - Nenhum\n");
        scanf("%d", &adicional);

        break;
        system("cls");

    }
}

return 0;
}
  • In Console shows the type of error on which line?

  • The code is extraordinarily disorganized and confusing, and so it is very difficult to understand it, which causes mistakes that are not always easy to find. If I did each task in a function, didn’t declare a bunch of variables at the beginning of the function the error might not even happen, but if it still happened it would be easy to locate it, so my suggestion is to rethink how to encode it, even to learn to do it the right way. The problem is that the variable op that controls the output of the loop never gets changed inside it, so it doesn’t come out. I don’t even know why there is such a variable. On second thought it shouldn’t even be a loop there.

  • 1

    I don’t want to give an answer because to fix this really will be a lot of work, to arrange more or less I prefer not to answer because this desensina, but the tip is given, the loop should be more external encompassing virtually every function and where has while should be another switch. But reinforcement, it will be easier to break each part into a different function.

1 answer

1

while(op==1), this condition here will always be true and cause the infinite loop if you type 1 to the op value and do not change it after or break to exit the loop.

Browser other questions tagged

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