Ir ao conteúdo

Exercicio:Receber uma frase do teclado e mostrar quantas letras a,e,i,o,u tem nafrase


snmelo

Posts recomendados

Postado

Eu fiz dessa forma, o programa rodou mas deu erro. Na onde eu errei?

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

int main()
{char a[30];
int la=0,le=0,li=0,lo=0,lu=0,cont=0;

printf("Digite uma frase: ");
gets(a);

while(cont<=30){
if(a[cont]=='a'){la++;cont++;}
if(a[cont]=='e'){le++;cont++;}
if(a[cont]=='i'){li++;cont++;}
if(a[cont]=='o'){lo++;cont++;}
if(a[cont]=='u'){lu++;cont++;}}

printf("letra a: %d",la);
printf("letra e: %d",le);
printf("letra i: %d",li);
printf("letra o: %d",lo);
printf("letra u: %d",lu);


system("PAUSE");
return 0;
}

Postado

O seu vetor "a[30]" vai da posição 0 a 29 (30 posições).

Quando utilizado para receber string, sempre haverá o terminador de string ('\0') na posição posterior ao último caracter inserido, reduzindo em 1 (um) a quantidade disponível para receber caracteres, ou seja, seu vetor "a[30]" permitirá apenas 29 (0 a 28) caracteres.

Outra coisa sobre seu código. Você sempre entrará com todos os 29 caracteres?

Seu "while()" está indo de 0 a 30, ou seja, 31 posições.

Existe uma função que retorna o valor do tamanho da string, que é "strlen()".

Sobre o "cont++". Quando tiveres elementos em comum, basta coloca-lo apenas uma vez, após o último tratamento.

Exemplo:


while( cont < strlen(a) )
{

if( a[cont] == 'a' )
la++;

if( a[cont] == 'e' )
le++;

if( a[cont] == 'i' )
li++;

if( a[cont] == 'o' )
lo++;

if( a[cont] == 'u' )
lu++;

cont++;
}

Dei uma modificada no seu código, usando um vetor para controlar a quantidade:


int main(void)
{
char frase[30] = {'\0'}; // Inicializa o vetor com NULL
int vogal[5] = {0}; // Inicializa o vetor com valor 0 (zero)
size_t cont = 0;

printf("Digite uma frase: ");
scanf("%[0-9a-zA-Z ]s%*c", frase); // "[0-9a-zA-Z ]" -> Restringe os caracteres digitados. Permitindo apenas numeros, letras e espaço. "%*c" -> Exlui o valor da tecla ENTER do buffer de entrada (stdin)

for(cont = 0; cont < strlen(frase); cont++)
{
if( frase[cont] == 'a' )
vogal[0]++;
if( frase[cont] == 'e' )
vogal[1]++;
if( frase[cont] == 'i' )
vogal[2]++;
if( frase[cont] == 'o' )
vogal[3]++;
if( frase[cont] == 'u' )
vogal[4]++;
}

printf("letra a: %d\n", vogal[0]);
printf("letra e: %d\n", vogal[1]);
printf("letra i: %d\n", vogal[2]);
printf("letra o: %d\n", vogal[3]);
printf("letra u: %d\n", vogal[4]);

return 0;
}

  • Membro VIP
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...