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;
}
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
1 curtida
Obrigado Consegui Resolver Aqui, Vlw Amigo!