Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lucasoad399

Comparação de um char dentro de um if

Recommended Posts

Estou fazendo atividades de um livro por onde estou aprendendo a programar. Estou estudando string e tenho que fazer uma atividade até meio besta, em que só são aceitas mulheres com menos de 24 anos, mas meu problema nem é com o array, mas com a variável char. De alguma forma o if nunca da verdade:

 

 

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


int main()
{




    char nome[30];
    int idade;
    char sexo;

puts ("Seleção de putas");

    puts ("Digite o seu nome");
    fgets (nome,30,stdin);
    puts ("Agora diga a sua idade: ");
    scanf ("%d", &idade);
    puts ("Sexo [m/f]");
    scanf ("%c ", &sexo);

    if (idade<25 && sexo == 'f')
        puts ("Você foi aceita no puteiro");
    else
        puts ("Cai fora!");


return 0;

}

 

Por alguma razão o sempre cai no else.

 

Obrigado.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, repare a utilização da função 'scanf'. Você passa como primeiro argumento "%c ". Dessa forma, o 'scanf' vai ler como primeiro caractere o newline, não o caractere que foi, de fato, inserido pelo usuário. Se o usuário inserir o caractere 'f', o 'scanf' vai se deparar com: "\nf".

 

Repare que, se você der um 'printf' como decimal no valor da variável 'sexo', o número 10 vai ser printado, que, em ASCII, é justamente o caractere newline, também representado por '\n'.

 

Para resolver o inconveniente, você precisa passar como primeiro argumento " %c". Desse modo, o 'scanf' ignora o primeiro caractere e lê o que vem em seguida, que, no caso, é o caractere inserido pelo usuário. Assim, o char inserido pelo usuário passará a ser atribuído à variável 'sexo' e o programa deverá funcionar corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Thalysson Torres
      Estou com problema nesse código, na verdade é uma duvida de como trabalhar melhor com string. Eu quero faze um programa e nele quero receber do usuario, o sexo, caso o usuario digite um nome no local do sexo e seja diferente de Masculino, Feminino... de mensagem de erro. 
       
       
      #include <stdio.h>
      #include <stdlib.h>
      #include <math.h>

      int main()
      {
          char nome [25], sexo;

          
          
      printf("Digite o nome \n");
      scanf("%[\n]", &nome);
      printf("Digite o Sexo:\n Para feminino digite: F \n\n Para masculino digite; M \n");
      scanf("%c",&sexo);
      if (sexo != 'f'|| 'F' || 'M' || 'm')
          printf("Sexo Invalido");
       
       
      ...
       


          
          return 0;
      }
       
    • Por Bruno Goedert Dalmolin
      Não consigo apresentar as palavras equivalentes conseguem me ajudar???
      O código é o seguinte: 
       
      #include <stdio.h>
      char equivale(int ddd){
          switch(ddd){
              case 61:
                  return "Brasilia";
                  break;
              case 71:
                  return "Salvador";
                  break;
              case 11:
                  return "Sao Palo";
                  break;
              case 21:
                  return "Rio de Janeiro";
                  break;
              case 32:
                  return "Juiz de Fora";
                  break;
              case 19:
                  return "Campinas";
                  break;
              case 27:
                  return "Vitoria";
                  break;
              case 31:
                  return "Belo Horizonte";
                  break;
          }
      }
      int main(){
          int ddd;
          scanf("%d",&ddd);
          equivale(ddd);
          printf("%d",equivale(ddd));
      }
    • Por m
      Sou iniciante em c e preciso transformar um num. romano em numero decimal mas não posso usar nenhuma biblioteca o função alem de for, while, strcmp, e if basicamente. 
    • Por dmerat
      Boa tarde, 
       
      Estou tentando aprender a linguagem JAVA e estou estudando um pouco sobre. Hoje estava estudando o comando switch e ao escrever o programa abaixo o mesmo não roda.
      package teste; import java.util.Scanner; public class Teste{ public static void main (String[] args){ char opcao; float num1, num2; Scanner entrada = new Scanner (System.in); System.out.print("Entre com o primeiro número: "); num1 = entrada.nextFloat(); System.out.print("Entre com a operação [+,-,*,/]: "); opcao = entrada.nextLine().charAt(0); System.out.print("Entre com o segundo número: "); num2 = entrada.nextFloat(); switch (opcao){ case '+': System.out.printf("O resultado da soma é de:%.2f \n",num1+num2); break; case '-': System.out.printf("O resultado da subtração é de:%.2f \n",num1-num2); break; case '*': System.out.printf("O resultado da multiplicação é de:%.2f \n",num1*num2); break; case '/': System.out.printf("O resultado da divisão é de:%.2f \n",num1/num2); break; default: System.out.println("Opção inválida."); break; } } } Mas se eu alterar e colocar para primeiro inserir o carácter referente a operação que será realizada o programa roda sem nenhum problema. Gostaria de saber o que tenho que fazer para o programa rodar dessa forma acima. Alguém poderia me ajudar? Desde já obrigado e desculpe se errei em algo no post pois sou novo por aqui.
    • Por rafaelsouzab
      Boa tarde,
       
      Em um projeto que estou montando existe algumas colunas em algumas tabelas que as respostas são apenas sim ou não (char (3)), ou poderiam ser 1 ou 0 (bit), porem está ai uma grande duvida minha, pois e não sei se deveria realmente usar sim ou não na tabela ou utilizar 0 ou 1, se teria algum problema em utilizar sim ou não para realizar algumas verificações, ou utilizar bit para verificar da mesma forma, já realizei alguns testes e o resultado aparentemente é o mesmo, gostaria de saber se tem alguma vantagem ou desvantagem em utilizar string ou utilizar bit.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.