Escreva uma função que recebe dois vetores de caracteres terminados por ’ \backslash 0 ': o vetor A é o gabarito de uma prova (“abdeacc…”) e o vetor B contém as respostas dadas por um aluno. A função deve retornar o número de acertos do aluno.
consigo

Passo 1

O enunciado pede uma função em C que receba dois vetores de caracteres terminados em '\0': um vetor A contém o gabarito e o outro vetor B contém as respostas do aluno. Nosso objetivo é percorrer ambos simultaneamente e contar quantas posições têm o mesmo caractere, ou seja, quantos “acertos” o aluno obteve.

Passo 2

Definimos uma assinatura simples em C que retorna um inteiro com o total de acertos. Dentro da função, precisamos de:
  1. Uma variável contadora (acertos) inicializada em zero.
  2. Um índice (por exemplo, i) ou ponteiros para percorrer os vetores.
  3. Um laço while que continue enquanto não encontrarmos o terminador '\0' em nenhum dos vetores.
  4. A cada iteração, comparamos A[i] com B[i] e, se iguais, incrementamos acertos.

Passo 3

Implementamos o laço de comparação. Ao final, retornamos o valor de acertos. Essa abordagem tem complexidade O(n), onde n é o comprimento do menor vetor (gabarito ou respostas).

Resposta

#include <stddef.h>

int contar_acertos(const char *gabarito, const char *respostas) {
    int acertos = 0;
    size_t i = 0;
    /* percorre até o final de um dos vetores */
    while (gabarito[i] != '\0' && respostas[i] != '\0') {
        if (gabarito[i] == respostas[i]) {
            acertos++;
        }
        i++;
    }
    return acertos;
}

Exercícios relacionados