Ir ao conteúdo
  • Cadastre-se

C Comparando elementos de vetores para correção de prova comparando o gabarito


Posts recomendados

Tendo um vetor de inteiros, (int gabarito[30]) que contém o resultado de uma prova com 30 questões objetivas, numeradas de 1 a 5, indicando qual é a opção correta para cada uma das questões da prova:

int gabarito[30] = {1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4};

1)Escreva uma função que receba o vetor gabarito, e um vetor resposta (de inteiros com dimensão 31), sendo que a primeira informação do vetor é o RA do aluno, e as demais as respostas que foram atribuídas pelo aluno a cada questão da prova:

int prova[31] = {123456,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1};

Esta função deve devolver um número inteiro indicando a quantidade de acertos que há no vetor resposta:

int corrige_prova(int gabarito[], int prova[]);

2)Escreva uma função que recebe um número inteiro e uma string (por referência). O número inteiro é a quantidade de acertos que foi obtida na prova e a string deverá conter “Aprovado” se o número de acertos for maior ou igual a 15 ou “Reprovado” caso contrário.

void verifica_situação(int acertos, char situacao[]);

Utilizando as funções acima escreva um programa em linguagem C que mostre um relatório na tela da seguinte forma, a partir de dados de vetor gabarito e prova:

Gabarito...: {1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4}

Respostas..: {2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1}

RA.........: 123456

Acertos....: 06

Resultado.: Reprovado

 

Sei como comparar qual é o menor ou maior, mas não sei fazer essa comparação entre os elementos de dois vetores, pesquisei muito sobre, mas não achei nada a respeito, alguém poderia me dar uma luz?

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Neste caso como a questão pede uma contagem de acertos a unica maneira de fazer é percorrendo todo o vetor com um laço de repeticao e salvar em uma variavel a quantidade, pense em algo parecido com:

 

int count = 0;
for(int i = 0; i < 30; i++){
  if(prova[i+1] == gabarito[i])
     count++;
}

eu fiz essa adição no indice da prova para descosiderar o RA no começo do vetor.

depois disso para a questão 1 voce retorna count e para a questão 2 voce usa para checar a condição de aprovação

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

@Larissa Maia

1 hora atrás, Larissa Maia disse:

Sei como comparar qual é o menor ou maior, mas não sei fazer essa comparação entre os elementos de dois vetores

Se sabe a definição de um vetor, então teria ao menos uma ideia de como trabalhar com ele: um conjunto de espaços de memória contíguos.

E veja, qualquer um desses elementos pode ser referenciado com o nome do vetor seguido pelo número de posição do elemento entre colchetes.

vet[0] - elemento de índice 0 (primeiro elemento)

vet[1] - elemento de índice 1 (segundo elemento)

Como acessar todos os elementos em sequência para fazer a comparação? Um loop, como mostrou o colega @Danilo Namitala .

Lembrando que sua função recebe o vetor gabarito e o vetor resposta.

 

Mostre o que tentou fazer até então.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@devair1010 Está na questão amigo
 

Citação

 

1)Escreva uma função que receba o vetor gabarito, e um vetor resposta (de inteiros com dimensão 31), sendo que a primeira informação do vetor é o RA do aluno, e as demais as respostas que foram atribuídas pelo aluno a cada questão da prova:

int prova[31] = {123456,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1};

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

8 minutos atrás, Larissa Maia disse:

@Danilo Namitala mas esse count eu chamo na 1 chamando a função "corrige_prova"? Porque não consegui evidenciar o numero de acertos...

O count voce vai cria dentro da sua função, ele que vai guardar o numero de acertos..

int corrige_prova( ... ) {
   int count = 0;
	/// faz a contagem como eu disse
	return count;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

3 horas atrás, Larissa Maia disse:

mas esse count eu chamo na 1 chamando a função "corrige_prova"? Porque não consegui evidenciar o numero de acertos...

O enunciado pede para a função retornar a quantidade de acertos. Essa quantidade será armazenada na variável count que será incrementada de acordo com isso, então ela deve ser declarada localmente na função que vai retornar o valor dela.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Olá, tudo bem? Espero que esteja bem [...]

Em 03/04/2022 às 19:33, Larissa Maia disse:

pesquisei muito sobre, mas não achei nada a respeito

Sendo um exercício, espera-se que encontre no apontamento|livro|apostila anterior ele; lá estão|deverão estar somente os fundamentos, pois esse é o objetivo — avaliação de leitura.

Ou seja, uma responta deve os recursos (anteriormente) observados conforme o apontamento|livro|aula|grupo|site|app.

Alguns assuntos em linguagem c de programação de computadores usuais nos apontamentos para exercícios semelhantes são:

  1. Tipos básicos
  2. Tipo derivado: Vetor
  3. Instrução condicional
  4. Operador lógico e aritmético
  5. Laços de repetição
  6. Iteração sobre vetor
  7. Entrada/Saída (I/O) de informação no aplicativo de console (com nenhuma ou o mínimo de “interface” gráfica)

Extra: abstração e decomposição de problema. Pode ser que existam outros, porém sei que esses são o suficiente.

Em 03/04/2022 às 19:33, Larissa Maia disse:

Sei como comparar qual é o menor ou maior, mas não sei fazer essa comparação entre os elementos de dois vetores

  • 6. Iteração sobre vetor(es) 

 

🙂 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • mês depois...

/*

Gabarito...: {1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4}
Respostas..: {2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1}
RA.........: 123456
Acertos....: 04
Resultado.: Reprovado

*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int corrige_prova(int [], int []);
void verifica_situacao(int, char []);

int main()
{

    int gabarito[30] = {1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4};
    int prova[31] = {345678,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1};
  int q, i;
  char situacao[10];
  
  q = corrige_prova(gabarito, prova);
  verifica_situacao(q, situacao);

    printf("\nGabarito...: {");
    for(i = 0;i < 30;i = i + 1)
      printf("%d,",gabarito[i]);
    printf("}");
    
    printf("\nRespostas..: {");
    for(i = 1;i < 31;i = i + 1)
      printf("%d,",prova[i]);
    printf("}");

    printf("\nRA.........: %d",prova[0]);
    printf("\nAcertos....: %02d",q);
    printf("\nResultado..: %s",situacao);

    return 0;
}

int corrige_prova(int gabarito[], int prova[])
{
    int i, q;
    for(i = 0, q = 0;i < 30;i = i + 1)
        if(gabarito[i] == prova[i+1])
            q = q + 1;
    return q;    
}

void verifica_situacao(int acertos, char situacao[])
{
    if(acertos >= 15)
        strcpy(situacao,"Aprovado");
      else    
        strcpy(situacao,"Reprovado");    
}
 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

 

Use o botão code como explicado no primeiro post desse forum. Veja a diferença:

 

/*
Gabarito...: {1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4}
Respostas..: {2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1}
RA.........: 123456
Acertos....: 04
Resultado.: Reprovado

*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int corrige_prova(int [], int []);
void verifica_situacao(int, char []);

int main()
{

    int gabarito[30] = {1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4,1,2,3,5,4};
    int prova[31] = {345678,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1};
  int q, i;
  char situacao[10];
  
  q = corrige_prova(gabarito, prova);
  verifica_situacao(q, situacao);

    printf("\nGabarito...: {");
    for(i = 0;i < 30;i = i + 1)
      printf("%d,",gabarito[i]);
    printf("}");
    
    printf("\nRespostas..: {");
    for(i = 1;i < 31;i = i + 1)
      printf("%d,",prova[i]);
    printf("}");

    printf("\nRA.........: %d",prova[0]);
    printf("\nAcertos....: %02d",q);
    printf("\nResultado..: %s",situacao);

    return 0;
}

int corrige_prova(int gabarito[], int prova[])
{
    int i, q;
    for(i = 0, q = 0;i < 30;i = i + 1)
        if(gabarito[i] == prova[i+1])
            q = q + 1;
    return q;    
}

void verifica_situacao(int acertos, char situacao[])
{
    if(acertos >= 15)
        strcpy(situacao,"Aprovado");
      else    
        strcpy(situacao,"Reprovado");    
}

,

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!