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
Para resolver, vamos precisar saber como:
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:
- Percorrer um array com
for
. - Testar se um caractere é vogal (comparar com
'a'
,'e'
, etc.). - 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 é:
- Criar índices separados (
iv
para vogais,ic
para consoantes). - Percorrer o vetor original:
- Se for vogal (
c == 'a' || c == 'e' || ...
), joga emvogais[iv++]
. - Senão, joga em
consoantes[ic++]
.
- Se for vogal (
- No final, você tem dois tamanhos:
iv
eic
, 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 tamanhon
- 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 tamanhonv
). - Separa consoantes em
cons[]
(com tamanhonc
). - Imprime cada vetor.
Exemplo de saída para o vetor
Vogais (6): u i e i a e
Consoantes (6): n v r s d d
{'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