Dificuldade no ciclo for

2 respostas Resolvido
c
J

A intenção é fazer um ciclo que leia 100 letras(pra testar coloquei só 10) e dizer qual a quantidade de vogais digitadas. Mas no meu ciclo for, dps de digitar a primeira letra ele começa a executar a instrução “printf” duas vezes seguidas, reduzindo a quantidade de vezes que posso digitar letras a 5. abaixo segue o código.

//sintese:
//objetivo:
//entrada
//saida
#include <stdio.h>
#include <conio.h>
int main(void){
	int contador=0;
	char vogal;
	for(int i=1;i<=10;i++){
		printf("Digite uma letra %i \n",i);
		scanf("%c",&vogal);
		if(((((vogal=='a')||(vogal=='e'))||(vogal=='i'))||(vogal=='o')||(vogal=='u')))
			contador+=1;
	}
	
	printf("%i vogais foram digitadas",contador);
	
	return 0;
}

2 Respostas

peczenyj
Solucao aceita

Vamos la

o scanf quando precisa ler dados da stdin, especialmente um caracter, pode ter alguns comportamentos inesperados. eu, por exemplo, evito o uso do scanf ( de fato eu evito ler da STDIN a menos que seja imperativo E OLHE LA ) mas no seu caso existe uma pequena substituicao que pode ajudar, e muito:

dentro do loop faça isso

printf("Digite uma letra %i: ",i);
		scanf("%s",buffer);
		vogal = buffer[0];

o buffer é um char buffer[128]; declarado fora do loop, abaixo da vogal.

dessa forma vc vai ler uma string ( uma cadeia de caracteres ) e vai pegar o primeiro (posição zero) como sendo a vogal ( e ignorando o resto ).

na se preocupe, eu acho a mistura de printf com scanf algo ate ruim de ser ensinado em faculdades porem vc sentando e programando vai entender isso em algumas semanas. sem pratica… fica dificil

J

Obrigado Consegui Resolver Aqui, Vlw Amigo!

Criado 4 de setembro de 2016
Ultima resposta 4 de set. de 2016
Respostas 2
Participantes 2