Com o vetor do exercício 8, faça uma função que transfira as consoantes para um vetor e as vogais para outro. Depois mostre cada um dos vetores.

Passo 1

Beleza, o exercício pede: a gente tem um vetor de caracteres (do “exercício 8”) e precisa criar uma função que pegue esse vetor, separe as vogais num vetor e as consoantes em outro, e depois mostre os dois vetores.
Conteúdo: vetores (arrays) de char, funções, laço de repetição (for) e teste condicional (if/else).
Para resolver, vamos precisar saber como:
  1. Percorrer um array com for.
  2. Testar se um caractere é vogal (comparar com 'a', 'e', etc.).
  3. Inserir elementos em outro vetor e acompanhar índices.

Passo 2

Primeiro, a teoria de identificação de vogais e consoantes:
  • Vogais em português (modo simplificado, só minúsculas): a, e, i, o, u.
  • Se um caractere não for vogal e for letra, consideramos consonante.
A ideia é:
  1. Criar índices separados (iv para vogais, ic para consoantes).
  2. Percorrer o vetor original:
    • Se for vogal (c == 'a' || c == 'e' || ...), joga em vogais[iv++].
    • Senão, joga em consoantes[ic++].
  3. No final, você tem dois tamanhos: iv e ic, que dizem quantas vogais e consoantes temos.

Passo 3

Vamos ao código em C (pseudocódigo bem próximo do real). A função separa() vai receber:
  • orig[] e seu tamanho n
  • vetores vazios vogais[], cons[]
  • ponteiros para os tamanhos finais *nv e *nc
#include <stdio.h>
#include <ctype.h>  // para isalpha()

void separa(char orig[], int n, char vogais[], int *nv, char cons[], int *nc) {
    int iv = 0, ic = 0;
    for (int i = 0; i < n; i++) {
        char c = orig[i];
        // Normaliza pra minúsculo pra facilitar
        c = tolower(c);
        // Testa se é letra antes de tudo
        if (isalpha(c)) {
            // Verifica vogal
            if (c=='a' || c=='e' || c=='i' || c=='o' || c=='u') {
                vogais[iv++] = c;
            } else {
                cons[ic++] = c;
            }
        }
        // Se não for letra, a gente simplesmente ignora
    }
    // Ajusta os tamanhos
    *nv = iv;
    *nc = ic;
}

int main() {
    // Exemplo de vetor do exercício 8
    char original[] = {'u','n','i','v','e','r','s','i','d','a','d','e'};
    int n = sizeof(original) / sizeof(original[0]);

    char vogais[n], cons[n];  // no pior caso, todos são de um tipo
    int nv, nc;

    separa(original, n, vogais, &nv, cons, &nc);

    // Mostra vogais
    printf("Vogais (%d): ", nv);
    for (int i = 0; i < nv; i++) {
        printf("%c ", vogais[i]);
    }
    printf("\n");

    // Mostra consoantes
    printf("Consoantes (%d): ", nc);
    for (int i = 0; i < nc; i++) {
        printf("%c ", cons[i]);
    }
    printf("\n");

    return 0;
}

Resposta

O código acima cumpre o pedido:
  • Separa vogais em vogais[] (com tamanho nv).
  • Separa consoantes em cons[] (com tamanho nc).
  • Imprime cada vetor.
Exemplo de saída para o vetor {'u','n','i','v','e','r','s','i','d','a','d','e'}:
Vogais (6): u i e i a e
Consoantes (6): n v r s d d

Exercícios relacionados