Duvida em logica

5 respostas
L

Bom dia,

procurei se havia alguma duvida semelhante, mas não encontrei.
O problema é q tenho que fazer um laço de repetição para contar entre seis nomes os maiores, menores, mulheres e homens. No entanto está dando erro qndo o laço volta e já solicita a segunda entrada.

veja meu codigo:

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

void main(){
	
	char nome [50], sexo;
	int qtdNome, qtdHomens, qtdMulheres, anoNascimento, menorIdade, maiorIdade;
	
	
	qtdNome = 1;
	qtdHomens = 0;
	qtdMulheres = 0;
	anoNascimento = 0;
	menorIdade = 0;
	maiorIdade = 0;
	
	do{
	
		printf("\nDigite o nome: ");
		gets(nome);
		printf("\nDigite o sexo (f/m)): ");
		scanf("%c", &sexo);
		printf("\nDigite o ano de nascimento: ");
		scanf("%i", &anoNascimento);
		
		if(sexo ==  'f' || sexo == 'F' && anoNascimento < 1996 ){
			qtdMulheres++;
			menorIdade++;
		} else if (sexo == 'm' || sexo == 'M' && anoNascimento < 1996 ){
			qtdHomens++;
			menorIdade++;
		}else if (sexo ==  'f' || sexo == 'F' && anoNascimento > 1996){
			qtdMulheres++;
			maiorIdade++;
		}else if (sexo == 'm' || sexo == 'M' && anoNascimento > 1996){
			qtdHomens++;
			maiorIdade++;
		}
		
		qtdNome++;		
	}while (qtdNome <= 6);
	
	//imprimir resultados
	
}

Alguem poderia me explicar onde estou errando nessa logica?

5 Respostas

L

pesquisando mais um pouco na net descobri que isso é um bug do C. mas estranho que em java tbm está dando erro.

michetti

Qual segunda entrada? ao invés de pedir o nome pula direto pro sexo?

se for isso você tem que usar o fflush antes do gets(nome), com isso ele limpa o buffer guardado no teclado…

fflush(stdin);

L

michetti,

obrigado pela resposta, tenho outra duvida. caso isso aconteça em Java, existe algum comando semelhante?

michetti

Então cara… que eu saiba isso não acontece em java… sou programador java(iniciante) e nunca vi isto acontecer.

asousaj

Exemplo e m Java.

String nome = "";
		int idade = 0;
		System.out.print("\nDigite seu nome: ");
		Scanner scanner = new Scanner(System.in);
		nome = scanner.nextLine();
		System.out.print("\nDigite sua idade :");
		idade = scanner.nextInt();
		System.out.print("\n\nSeu nome é " + nome + " e sua idade é " + idade + " anos.");
		scanner.close();
Criado 15 de novembro de 2013
Ultima resposta 17 de nov. de 2013
Respostas 5
Participantes 3