Sem usar as funções para manipulação de strings da biblioteca <string.h>, use a função gets () para armazenar seu nome na string nome [100] e:
a. Informe o numero de caracteres do seu nome.
b. Informe o numero de vogais, consoantes e espaços em branco do seu nome.
c. Exiba seu nome sem vogais e espaços em branco.
d. Substituir um caractere informado pelo usuário pelo caractere ‘*’.
a. Informe o numero de caracteres do seu nome.
b. Informe o numero de vogais, consoantes e espaços em branco do seu nome.
c. Exiba seu nome sem vogais e espaços em branco.
d. Substituir um caractere informado pelo usuário pelo caractere ‘*’.
Passo 1
A gente precisa ler o nome do usuário usando a função gets() numa string de tamanho 100, depois percorrer essa string para calcular várias coisas (quantidade de caracteres, vogais, consoantes e espaços), criar outra string sem vogais nem espaços e, por fim, substituir um caractere escolhido por ‘*’ no nome original.
Passo 2
First, declare as variáveis necessárias: um vetor
Use
char nome[100]
, contadores int total=0, vogais=0, consoantes=0, espacos=0;
, índices int i, j;
e uma segunda string char semVogais[100]
.Use
gets(nome);
para ler o nome completo (com espaços) do usuário. Essa função lê até o caractere de nova linha e coloca o \0
no final.Passo 3
Percorra
nome
num loop for(i=0; nome[i]!='\0'; i++)
e: incremente total
; se nome[i]
for espaço (' '
), incremente espacos
; senão, se for letra (isalpha(nome[i])
), teste se é vogal comparando toupper(nome[i])
com 'A','E','I','O','U'
para incrementar vogais
ou, caso contrário, consoantes
.Passo 4
Para montar a string sem vogais nem espaços, use outro loop: inicialize
j=0
; para cada nome[i]
, se não for espaço nem vogal (mesmo teste de vogal), copie nome[i]
para semVogais[j++]
. Ao final, faça semVogais[j]='\0'
.Passo 5
Peça ao usuário um caractere para substituir: use
char alvo; scanf(" %c", &alvo);
e então percorra nome
de novo; sempre que nome[i]==alvo
, atribua nome[i]='*'
.Passo 6
Por fim, mostre na tela: número total de caracteres, vogais, consoantes, espaços, o nome sem vogais e espaços e o nome com substituições.
Resposta
#include <stdio.h>
#include <ctype.h>
#include <ctype.h>
int main() {
char nome[100];
char semVogais[100];
int total = 0, vogais = 0, consoantes = 0, espacos = 0;
int i, j;
char alvo;
char nome[100];
char semVogais[100];
int total = 0, vogais = 0, consoantes = 0, espacos = 0;
int i, j;
char alvo;
printf("Digite seu nome: ");
gets(nome); // leitura do nome com espaços
// a) contar total de caracteres, vogais, consoantes e espaços
for (i = 0; nome[i] != '\0'; i++) {
total++;
if (nome[i] == ' ') {
espacos++;
} else if (isalpha((unsigned char)nome[i])) {
char c = toupper((unsigned char)nome[i]);
if (c=='A' || c=='E' || c=='I' || c=='O' || c=='U')
vogais++;
else
consoantes++;
}
}
// b) exibindo resultados parciais
printf("\nTotal de caracteres: %d\n", total);
printf("Vogais: %d\n", vogais);
printf("Consoantes: %d\n", consoantes);
printf("Espacos em branco: %d\n", espacos);
// c) montar string sem vogais nem espacos
j = 0;
for (i = 0; nome[i] != '\0'; i++) {
if (nome[i] != ' ') {
char c = toupper((unsigned char)nome[i]);
if (!(c=='A' || c=='E' || c=='I' || c=='O' || c=='U')) {
semVogais[j++] = nome[i];
}
}
}
semVogais[j] = '\0';
printf("\nNome sem vogais e espacos: %s\n", semVogais);
// d) substituir caractere informado por '*'
printf("\nDigite o caractere a ser substituido por '*': ");
scanf(" %c", &alvo);
for (i = 0; nome[i] != '\0'; i++) {
if (nome[i] == alvo) {
nome[i] = '*';
}
}
printf("Nome apos substituicao: %s\n", nome);
return 0;
}