Ir ao conteúdo
  • Cadastre-se
Program jose

C Erros em estruturas de decisão

Recommended Posts

Oi pessoal será que vocês podem mim dar uma ajuda?

Estou tentando criar um programa para uma biblioteca, que leia o tipo de usuário e a classificação do livro obedecendo as regras:

- existem dois tipos de usuarios: 

O tipo 'a' ( aluno ) e do tipo 'p' ( professor ).

- existem duas classificações de livros:

a e b. Livros do tipo a podem ser usados por todos e livros do tipo b só por professores.

Eu tentei fazer mas tá dando erro.

Obs.: eu sou iniciante e estou utilizando o c4droid.

obrigado.
 

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

main()
{
    char tipo,classificacao;
    printf(" digite o tipo de usuario \n");
    scanf("%s",&tipo);
    printf(" digite a classificaçao do livro \n");
    scanf("%c",&classificacao);
    switch (classificacao){
        case 'a':   //se classificação for a


         //o primeiro erro é na linha abaixo

        /*eu já tentei separar em dois if's , até dar certo mais eu queria utilizar as duas barras*/


            if ( tipo == "a" ) || ( tipo == "p") 
            printf(" o usuario pode utilizar o livro ");
         else    //se tipo for diferente de a e p
              printf( " tipo de usuario invalido ");
         break;
         case 'b':    //se classificação for b
              if (tipo == "a")
              printf( " o usuario nao pode utilizar o livro ");
              if (tipo == "p")
               printf(" o usuario pode utilizar o livro ");
               if (tipo != "a") && ( tipo != "p")
               printf(" tipo de usuario invalido");
            
           break;
           default:
           printf ( " classificaçao invalida ");
    }
        return (0);
}   //nessa linha tambem dar erro

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, como você é iniciante precisa entender uma coisa sobre as condicionais. Uma condicional com apenas uma condição funciona da seguinte forma:

 

if(CONDICAO (OPERADOR) ALGO)
  
//Ex:
  
if(1 == 1)

Quando você começa a trabalhar com mais de uma, eu percebi que você estava colocando parênteses em cada condição, o que está errado. Você deve colocar entre os parênteses if todas as condições que você deseja analisar, por exemplo:

if(Variavel1 == true && Variavel2 == true && Variavel3 == true)

Caso você esteja realizando algumas operações lógicas que devem ser realizadas sem qualquer possibilidade de erro, é recomendado colocar entre parênteses em cada uma das operações lógicas. A condição P ou Q e X ou Y pode ser escrita da seguinte maneira, assim como na lógica matemática:

if((Variavel1 <= 0 || Variavel2 >= 0) && (Variavel3 <= 0 || Variavel4 >= 0))

Você deverá consertar isso para solucionar o primeiro problema. 

 

Já o segundo problema é também na parte de condicionais, mas é na parte dos operadores relacionais, que no caso é o de igualdade (==). Para fazer comparação de variável com caractere dentro do if, você deverá colocar o caractere entre aspas simples, por exemplo:

if(Variavel1 == 'A' || Variavel1 == 'B')

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×