Escreva um programa que leia uma linha de caracteres do teclado e imprima quantas vezes um caractere, também fornecido pelo teclado, aparece nesta linha. O programa também deve imprimir em que posições o caractere foi encontrado.
Passo 1
O programa vai ler uma linha de texto e um caractere alvo, percorrer a linha para contar quantas vezes esse caractere aparece e guardar os índices onde ele ocorre, e depois exibir a quantidade e as posições encontradas.
Passo 2
Use uma função de leitura de string (por exemplo, fgets em C) para capturar a linha completa, e depois leia o caractere alvo separadamente. Remova o \n que o fgets adiciona, se houver.
Passo 3
Inicialize um contador em zero e um vetor de posições vazio. Faça um laço for que vá de 0 até o comprimento da string – 1. A cada iteração, compare o caractere atual da string com o alvo: se forem iguais, incremente o contador e armazene o índice no vetor de posições.
Passo 4
Após percorrer toda a linha, imprima o valor do contador. Se for maior que zero, em seguida imprima os elementos do vetor de posições, que indicam onde o caractere foi encontrado.
Resposta
#include <stdio.h>
#include <string.h>
#include <string.h>
int main() {
char linha[1000];
char alvo;
int posicoes[1000];
int count = 0;
char linha[1000];
char alvo;
int posicoes[1000];
int count = 0;
// Leitura da linha e do caractere alvo
if (fgets(linha, sizeof(linha), stdin) == NULL) return 0;
// Remove o '\n' ao final, se existir
size_t len = strlen(linha);
if (len > 0 && linha[len-1] == '\n') {
linha[len-1] = '\0';
len--;
}
if (scanf(" %c", &alvo) != 1) return 0;
// Percorre a linha para contar ocorrências e guardar posições
for (int i = 0; i < len; i++) {
if (linha[i] == alvo) {
posicoes[count] = i;
count++;
}
}
// Imprime resultados
printf("O caractere '%c' aparece %d vez(es)\n", alvo, count);
if (count > 0) {
printf("Posições: ");
for (int i = 0; i < count; i++) {
printf("%d ", posicoes[i]);
}
printf("\n");
}
return 0;
}