Ir ao conteúdo

Posts recomendados

Postado

Fazer um programa para ler uma string e transferir as consoantes para um vetor e as vogais para outro. Ao final, imprima cada um dos vetores.

 

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>

int main(){
    char frase[20], vogal[20], consoante[20];
    int j, k, tam, v = 0, c = 0;
    
    fflush(stdin);
    
    fgets(frase, 20, stdin);
    
    tam=strlen(frase);
    
    for(j=0;j<tam;j++){
        if(toupper(frase[j])=='A'||toupper(frase[j])=='E'||
           toupper(frase[j])=='I'||toupper(frase[j])=='O'||
           toupper(frase[j])=='U')
        {
            vogal[v++] = frase[j];/*acessa a posição e depois incrementa a variável*/
        }
        else{
            k=(int)frase[j];      /* pega o código ascii do caractere */
            if( k > 64 || k < 91 ||/* letras maiúsculas */
                k > 96 || k < 123 )/* letras minúsculas*/
                consoante[c++]=frase[j];
        }
    }
    vogal[v++]='\0';
    consoante[c++]='\0';
    printf("Vetor de vogais: ");
    for(v=0;v<tam;v++)
    {
        if(vogal[v]=='\0')break;
        printf("%c",vogal[v]);
    }
    printf("\nVetor de consoantes: ");
    for(c=0;c<tam;c++)
    {
        if(consoante[c]=='\0')break;
        printf("%c",consoante[c]);
    }

    return 0;
}

 

O programa realiza tudo certinho, mas se for mais de uma palavra (ex. Hello World) fica:

Vetor de vogais: eoo

Vetor de consoantes: Hll Wrld

O vetor das consoantes deveria ficar: HllWrld (sem o espaço entre as palavras). Help.

  • Amei 1
  • Triste 1
  • Membro VIP
Postado
printf("\nVetor de consoantes: ");
    for(c=0;c<tam;c++)
    {
        if(consoante[c]=='\0')break;
        if(consoante[c]!=' ') printf("%c",consoante[c]); //<<-- :o)
    }

: o )

  • Curtir 1
  • Amei 1
Postado

@immoraesz Complicada sua situação aqui no fórum :D

Nada leu dos outros tópicos sobre como usar fgets(), e agora quer ajuda em um programa que não foi você que escreveu...

Se algum colega quiser dar a resposta de bandeja novamente, fiquem a vontade, freguês satisfeito sempre volta 🤪

De qualquer forma, se quiser se esforçar o mínimo, leia esse trecho e descubra o erro:

35 minutos atrás, immoraesz disse:
            if( k > 64 || k < 91 ||/* letras maiúsculas */
                k > 96 || k < 123 )/* letras minúsculas*/

Mesmo copiando o código, não conseguiu copiar direito.

  • Amei 1
  • Haha 1
Postado
2 horas atrás, immoraesz disse:

O vetor das consoantes deveria ficar: HllWrld (sem o espaço entre as palavras). Help.

É só fazer uma condicional para desconsiderar o espaço. Ou então teste os caracteres da string com a função isalpha que retorna diferente de zero se for uma letra do alfabeto.

 

E não precisa de outros loops para mostrar as letras, passe direto para o printf,

printf("%s\n%s\n", vogal, consoante);

 

  • Curtir 2
  • Obrigado 1
Postado
Em 20/01/2022 às 15:07, immoraesz disse:

O programa realiza tudo certinho, mas se for mais de uma palavra (ex. Hello World) fica:

Vetor de vogais: eoo

Vetor de consoantes: Hll Wrld

O vetor das consoantes deveria ficar: HllWrld (sem o espaço entre as palavras). Help

 

Consegue achar a parte em "seu"  programa em que testa pela presença do espaço???

 

Não use esses números mágicos. Em nada ajuda. Use o trivial: 'a' é isso. Não fica mais fashion escrevendo 97 por exemplo.

 

 

  • Curtir 1

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!