Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Lucas Tezolini Herler

C Leia uma Matriz 3 x 5 que se refere às respostas de 5 questões

Recommended Posts

#include<stdio.h>
#include<locale.h>
#define l 3
#define c 5
int main ()
{
    setlocale(LC_ALL, "Portuguese_Brazil");
    int i, j, acertos[3];
    char gab[c], m[l][c];
    gabarito(gab);
    ler(m);
}
gabarito (char gab[c])
{
    printf("Criando o gabrito: \n\n");
    int i, j;
    for (i=0;i<5;i++)
    {
        printf("Questão %d: \nMarque a, b, c, d ou e = ", i+1);
        scanf("%c", &gab[i]);
        getchar();
    }
}
ler (char m[l][c])
{
    int i, j, acertos[i];
    char gab[5];
    for (i=0;i<l;i++)
    {
        acertos[i] = 0;
        printf("Informa as respostas do aluno %d \n");
        for (j=0;j<c;j++)
        {
            printf("Questão %d: \n", j+1);
            scanf("%c",&m[i][j]);
            getchar();
            if (m[i][j] = gab[i])
            {
                acertos[i] = acertos[i] + 1;
            }
            printf("\n");
        }
    }
    printf("\n\nINFORMANDO O RESULTADO !\n\n");
    for (i=0;i<l;i++)
    {
        for (j=0;j<c;j++)
        {
            printf("O aluno %d obteve %d acertos \n", i, acertos[i]);
        }
    }
    getchar();
}

10. Leia uma Matriz 3 x 5 que se refere às respostas de 5 questões de múltipla
escolha, referente a 3 alunos. Leia também um vetor de 5 posições contendo o
gabarito de respostas que podem ser a, b, c, d ou e. Seu programa deverá
comparar as respostas de cada candidato com o gabarito e emitir um vetor
denominado resultado, contendo a pontuação correspondente a cada aluno.

 

Esse programa que eu fiz só lê o gabarito e depois ele trava.. Alguém sabe onde poderia estar o erro ? Não to conseguindo visualizar. 

Agradeço desde já

Compartilhar este post


Link para o post
Compartilhar em outros sites
Postado (editado)

- A função main() deveria estar no fim do código, pois como está o main() chama funções que só estão definidas depois dele.

 

- Colocar o tipo void das funções que não retornam valores.

 

- Na função ler() está o vetor acertos[] está sendo declarado com comprimento i (int acertos[ i ]), mas deveria ser um número no lugar do i.

 

- Usou = neste if(m[ i ][j] = gab[ i ]), mas deveria ser == pois este é o operador de comparação de igualdade.

 

- São declaradas variáveis nas funções main() e gabarito() que não são usadas nas funções.

 

- A função ler() não recebe o gabarito como parâmetro de entrada, logo não dá pra comparar pois não tem os valores do gabarito.

Editado por isrnick

Compartilhar este post


Link para o post
Compartilhar em outros sites

''- A função ler() não recebe o gabarito como parâmetro de entrada, logo não dá pra comparar pois não tem os valores do gabarito.''

Como eu faço isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Lucas Tezolini Herler disse:

Como eu faço isso ?

ler (char m[l][c], char gab[c])
{

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 minutos atrás, Lucas Tezolini Herler disse:

entendi, porém não to conseguindo retornar o vetor todo.. Alguma ideia ?

Não entendi, o que você quer dizer com "retornar o vetor todo"?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não se retorna vetores em C, pois só se retorna 1 valor, então seria possível retornar um ponteiro de um vetor alocado dinamicamente, ou retornar uma struct que contém um vetor, mas não retornar um vetor comum.

 

Mas nesse caso não é necessário retornar nada, o vetor gab já é passado como parâmetro de entrada do função, e vetores são passados por referência, ou seja passa o endereço de memória onde os dados do vetor são guardados (ao invés de passar os valores guardados no vetor).

 

Isso significa que as alterações/atribuições que fizer ao vetor gab dentro da função estão de fato sendo guardadas no mesmo lugar da memória do vetor gab fora da função (o gab do main() que foi passado como argumento).

 

Então não precisa retornar o vetor pois o próprio gab que foi passado como argumento da função já funciona como uma espécie de variável de "retorno".

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Considerei o que disse e realizei as alterações, o código está assim. O problema é que não está contando de forma correta os acertos dos alunos, uma vez que quando eu testei o código e pus todas as respostas do aluno 0 de acordo com o gabarito, apareceu que ele tinha só 1 acerto. 

#include<stdio.h>
#include<locale.h>
#define l 3
#define c 5
void gabarito (char gab[c])
{
    printf("Criando o gabrito: \n\n");
    int i, j;
    for (i=0;i<5;i++)
    {
        printf("Questão %d: \nMarque a, b, c, d ou e = ", i+1);
        scanf("%c", &gab[i]);
        getchar();
    }
}
void ler (char m[l][c], char gab[c])
{
    int i, j, acertos[3];
    for (i=0;i<l;i++)
    {
        acertos[i] = 0;
        printf("Informe as respostas do aluno %d \n", i);
        for (j=0;j<c;j++)
        {
            printf("Questão %d: \n", j+1);
            scanf("%c",&m[i][j]);
            getchar();
            if (m[i][j] == gab[i])
            {
                acertos[i] = acertos[i] + 1;
            }
        }
    }
    printf("\n\nINFORMANDO O RESULTADO !\n\n");
    for (i=0;i<l;i++)
    {
        printf("O aluno %d obteve %d acertos \n", i, acertos[i]);
    }
    getchar();
}
int main ()
{
    setlocale(LC_ALL, "Portuguese_Brazil");
    int acertos[3];
    char gab[c], m[l][c];
    gabarito(gab);
    ler(m, gab);
    return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×