Escreva uma função que recebe dois vetores de caracteres terminados por ’
': o vetor
é o gabarito de uma prova (“abdeacc…”) e o vetor
contém as respostas dadas por um aluno. A função deve retornar o número de acertos do aluno.
consigo
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:
- Uma variável contadora (
acertos) inicializada em zero. - Um índice (por exemplo,
i) ou ponteiros para percorrer os vetores. - Um laço
whileque continue enquanto não encontrarmos o terminador'\0'em nenhum dos vetores. - A cada iteração, comparamos
A[i]comB[i]e, se iguais, incrementamosacertos.
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;
}