Faça um programa onde o usuário digita 3 informações a respeito de uma pessoa: Nome, endereço e telefone. Concatene essas três informações em uma única string e faça uma contagem de quantas letras do alfabeto estão presentes nesta string (considerando as redundâncias) e também de dígitos numéricos. Os espaços e os caracteres de pontuação devem ser ignorados(as funções de contagem já fazem isso).
Dica: use as funções int isalpha(char cr) e int isdigit(char cr).
Exemplo:
Nome: Ana Claudia
Endereço: Rui Barbosa, 234
Tel: 234-0912
Resultado:
Quantidade de letras pertencentes ao alfabeto
.
Quantidade de dígitos numéricos
Dica: use as funções int isalpha(char cr) e int isdigit(char cr).
Exemplo:
Nome: Ana Claudia
Endereço: Rui Barbosa, 234
Tel: 234-0912
Resultado:
Quantidade de letras pertencentes ao alfabeto
Quantidade de dígitos numéricos
Passo 1
O enunciado pede um programa em C em que o usuário digita três strings (nome, endereço e telefone). A gente vai “colar” essas três numa sequência só e contar:
- Quantas letras do alfabeto aparecem (função
isalpha
) - Quantos dígitos numéricos aparecem (função
isdigit
)
Espaços e pontuação a gente ignora naturalmente, porque nemisalpha
nemisdigit
retornam verdadeiro para eles.
Conteúdo envolvido:
• Leitura de strings em C (fgets
)
• Manipulação básica de arrays dechar
• Loop para percorrer cada caractere
• Uso de<ctype.h>
(isalpha
eisdigit
)
Tudo que precisamos é de três bufferschar[]
, dois contadores e umfor
para vasculhar cada string.
Passo 2
Ler as três informações. Como o cara pode digitar espaços (ex: “Ana Claudia”), a gente usa
fgets
. Exemplo pra ler o nome:char nome[100];
printf("Nome: ");
fgets(nome, 100, stdin);
// opcionalmente remover o '\n' que o fgets captura
Faz o mesmo para
Dica de amigo: depois de cada
endereco
e telefone
.Dica de amigo: depois de cada
fgets
, dá pra checar se o último caractere é '\n'
e substituir por '\0'
para evitar lixo na string.Passo 3
Agora vamos contar. Declara dois contadores:
int conta_letras = 0;
int conta_digitos = 0;
E monta um loop para cada string, tipo:
for (int i = 0; nome[i] != '\0'; i++) {
if (isalpha(nome[i])) conta_letras++;
else if (isdigit(nome[i])) conta_digitos++;
}
Repete esse mesmo
for
para endereco
e para telefone
. A cada caractere, isalpha(c)
retorna não zero se for letra (A–Z ou a–z) e isdigit(c)
retorna não zero se for dígito (0–9). Se nem uma nem outra, a gente ignora.Passo 4
Depois de rodar os três loops,
conta_letras
e conta_digitos
têm o total desejado. Agora é só imprimir:printf("Quantidade de letras pertencentes ao alfabeto = %d\n", conta_letras);
printf("Quantidade de dígitos numéricos = %d\n", conta_digitos);
Resposta
Usando o exemplo do enunciado:
Nome: Ana Claudia
Endereço: Rui Barbosa, 234
Tel: 234-0912
Nome: Ana Claudia
Endereço: Rui Barbosa, 234
Tel: 234-0912
A saída fica:
Quantidade de letras pertencentes ao alfabeto = 20
Quantidade de dígitos numéricos = 10
Quantidade de letras pertencentes ao alfabeto = 20
Quantidade de dígitos numéricos = 10