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>
int main() {
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;
}

Exercícios relacionados