Ir para conteúdo

Arquivado

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

Recommended Posts

Boa tarde pessoal, sou novo no ramo da programação. Tenho dúvidas referente à uma validação dados no sexo do usuário solicitado pelo sistema. Estou utilizando %s para fazer o scanf do char digitado. Utilizo aspas duplas para fazer a verificação se o usuário não digitou nada e utilizando aspas simples para caso o usuário tenha digitado algum caractere diferente de 'M', 'm', 'f' ou 'F', mas mesmo assim na hora de compilar ele informa sexo inválido, mesmo digitando as duas opções de sexo, porém, ao fazer um contador de sexo masculino consigo utilizar aspas simples. Alguém poderia me ajudar nesse procedimento? Desde já agradeço.

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

int main(int argc, char *argv[]) {
	
	
	int i =0, contHomem =0;
	float alt = 0, menorAlt = 0;
	char sexo;
	
	for(i=0; i<10; i++){
		printf("\tPESSOA#%d\n",i+1);
		
		do{
			printf("Digite altura: ");
			scanf("%f",&alt);
			if(alt < 0){
				printf("Valor invalido!\n");
			}
		}while(alt < 0);
		
		do{
			printf("Digite o sexo: ");
			scanf("%s",&sexo);
			
			
			if((sexo =="") ||(sexo != 'm') || (sexo !='M') || (sexo !='f') || (sexo !='F')){
				printf("Valor invalido!\n");
			}
		}while((sexo =="") || (sexo != 'm') || (sexo !='M') || (sexo !='f') || (sexo !='F') );
			
			//contagem de homens
			if((sexo == 'm') || (sexo == 'M')){
				contHomem++;
			}	
	}
	
	printf("O numero de homens eh: %d", contHomem);
	
	return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você está perguntando é:

Se o sexo for diferente de "M", ou o sexo for diferente de "m"- > pois bem... "M" é diferente de "m".

Espero que tenha entendido.

do{
   printf("Digite o sexo: ");
   scanf("%s",&sexo);

   if( (sexo != 'm') && (sexo !='M') && (sexo !='f') && (sexo !='F') ){
     printf("Valor invalido!\n");
   }
}while((sexo != 'm') && (sexo !='M') && (sexo !='f') && (sexo !='F') );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado CiroboyBR!!

 

Entendi sim, foi utilizado o "&&" porque ambos precisam ser passados como parâmetros na hora de ser validado.

 

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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