Ir ao conteúdo

Posts recomendados

Postado

/*4. Faça um programa que leia uma string do teclado e que conte e imprima na tela quantas vogais (maiúsculas
e minúsculas) ela possui.
*/

#include <stdio.h>

    int main(){

     int i,j,k,l,m;
     char asc[50], vogais_min[]="aeiou", vogais_mai[]="AEIOU";

      printf("Informe os a string\n");
       gets(asc);

       for (i=0; asc[i]!='\0'; i++){
        for (j=0;j<6;j++){
         if(vogais_min[j] == asc[i]){
          k++;}
         else if(vogais_mai[j] == asc[i]){
          l++;}
         }}
        if(k==0 && l==0){
         printf("\n não ha vogais");
        }
        else{
         printf("\n ha %i vogais maiusculas e %i vogais minusculas", l,k);
        }

   return 0; }
 

  • Obrigado 1
Postado

@ricardopeccim    olá ,   você usou a função "gets" ,   e ela foi muito boa na época dela , mas se tornou obsoleta e os compiladores  mais atuais não aceitam ela ,  e aqui no visual studio , não compilou por causa dela mesmo ,  então melhor usar o fgets ,  e outra coisa no seu código é que você criou as variáveis para armazenar o total de maiúsculas e outra para o total de minúscula  e não as inicializou , e depois você incrementou elas , sem saber que valor elas continham ,  pois sem inicializar elas terão valores desconhecido , que geralmente se diz que é lixo de memória ,    e então fazendo algumas modificações seu código ficou assim  :

#define _CRT_SECURE_NO_WARNINGS    // para usar scanf o outras funções no visual studio
#include <stdio.h>
#include <string.h>
int main() 
{
    int i, j, minusc=0, maiusc=0;
    char asc[50], vogais_min[] = "aeiou", 
                  vogais_mai[] = "AEIOU";
    printf("Informe os a string ");
    fgets(asc, 50, stdin);
    asc[strlen(asc) - 1 ] = '\0';  // remover o newline pego pelo fgets
    for (i = 0; asc[i] != '\0'; i++) 
    {
        for (j = 0; j<5; j++)      // aeiou só tem cinco caracteres mesmo 
        {                          // entao o loop só vai ate 4 que é menor que cinco
            if (vogais_min[j] == asc[i]) 
            {
                minusc++;
            }
            else
            {
                if (vogais_mai[j] == asc[i])
                {
                    maiusc++;
                }
            }
        }
    }
    if (minusc == 0 && maiusc == 0) 
    {
        printf("\nnão ha vogais");
    }
    else 
    {
        printf("\n ha %d vogais maiusculas\n\
                \r\t e\n\
                \r %d vogais minusculas\n\n\n", 
                               maiusc, minusc);
    }

    return 0;
}

 

  • Curtir 1
  • Obrigado 1
Postado

Outra forma é com as funções strchr e islower (ou isupper) para identificar as letras, aí o loop da contagem ficaria para pegar a string de str e incrementar as duas variáveis para maiúscula e minúscula fica assim,

 

for(int i = 0; str[i] != 0; i += 1){
    if(strchr("aeiouAEIOU", str[i]) != NULL){
        if(islower(str[i])){
            vogais_min += 1;
        }else{
            vogais_mai += 1;
        }
    }
}

 

  • Obrigado 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...