Ir ao conteúdo

Posts recomendados

Postado

Exercício: Fazer um mini sistema acadêmico que receba RA e nota do aluno,  que possa alterar as notas, exibir média de cada aluno e média total da turma.

OBS: Minha opção  4 e 5 já estão funcionando, a minha duvida é como fazer a opção 2 e 3 para substituir as notas dos alunos já cadastrados.

 

MENU:

1 – Inserir Aluno/Nota
2 – Alterar Nota 1 Bimestre
3 – Alterar Nota 2 Bimestre
4 – Exibir Media por Aluno
5 – Exibir Media por Turma
6 – Sair

 

 

 


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

float aluno[2][3], soma, media, turmat, auxW;
int l, opcao = 0;;


int menu()
{

    printf("1- Informe RA/NOTA: \n");
    printf("2- Alterar nota primeiro bimestre: \n");
    printf("3- Alterar nota segundo bimestre: \n");
    printf("4- Imprimir media do aluno: \n");
    printf("5- Imprimir media da turma: \n");
    printf("Informe uma opcao: \n");
    scanf("%d", &opcao);

    if(opcao==4)
    {
        imprimirmedia();
    }
    if(opcao==5)
    {
        imprimirmediaturma();
    }

    return(0);
}
//Minha duvida está nessa função.
int alterarnota(){

    printf("Informe o RA do aluno que deseja alterar a nota: \n");

return(0);
}

int imprimirmedia()
{
    //aqui exibi a media do aluno
    for(l=0; l<2; l++)
    {
        soma=aluno[l][1] + aluno[l][2];
        media = (aluno[l][1] + aluno[l][2])/2;
        printf("RA do aluno [%1.f]\n Nota[%2.f]\n Nota2[%2.f]\n Soma[%2.f]\n media[%2.f] \n", aluno[l][0], aluno[l][1], aluno[l][2], soma, media);
    }
    return(0);
}

int imprimirmediaturma()
{
    //aqui exibir e calcular a média da turma.
    turmat =0;
    for(l=0; l<2; l++)
    {
        turmat = turmat + (aluno[l][1] + aluno[l][2])/2;

    }
    turmat = turmat /2;
    printf("A madia da turma e: [%2.f] \n", turmat);
    return(0);
}

void main()
{
    //Aqui preenche a matriz com o RA e a nota do aluno.
    printf("******* CADASTRAR RA ALUNO ******* \n");
    for(l=0; l<2; l++)
    {
        menu();
        if(opcao == 1){
        printf("Informe o RA: \n");
        scanf("%f", &aluno[l][0]);

        printf("Informe a nota do 1 Bimestre: \n");
        scanf("%f", &aluno[l][1]);

        printf("Informe a nota do 2 Bimestre: \n");
        scanf("%f", &aluno[l][2]);
        }
    }

}

 

 

  • Curtir 1
Postado

Olá, tudo bem?

 

A base de dados está defasada, pois cada aluno tem 2 notas, e uma turma.

 

Então, o problema revela a existência de 2 notas por aluno, se cada nota salva representa a consolidação das notas no bimestre, o mínimo é de 2 notas por aluno para 2 bimestres, respectivamente. Outro aspecto do problema é que existe relatório consolidado por aluno e por turma. Logo, exibir média por Aluno e por Turna implica em sistema de identificação da Turma para determinação seus alunos, os dos Alunos para determinar a Turma. Ou seja, mais um campo para vetor, ou mais uma vetor para o campo. Ao que parece, é isto que está faltando para os quesitos ( 2 – , 3 – ).

 

O.k. !? Tchau.

 

UPDATE:

A sinapse é essa para a base

alunos[TURMA][ALUNO][NOTAS];

 

  • Curtir 2
Postado

Olá, tudo bem.

 

Na verdade a média por aluno e por turma não é o problema, pois estou usando duas funções que fazem essa parte do meu algoritmo. São elas:


int imprimirmedia()
{
    //aqui exibi a media do aluno
    for(l=0; l<2; l++)
    {
        soma=aluno[l][1] + aluno[l][2];
        media = (aluno[l][1] + aluno[l][2])/2;
        printf("RA do aluno [%1.f]\n Nota[%2.f]\n Nota2[%2.f]\n Soma[%2.f]\n media[%2.f] \n", aluno[l][0], aluno[l][1], aluno[l][2], soma, media);
    }
    return(0);
}

 


int imprimirmediaturma()
{
    //aqui exibir e calcular a média da turma.
    turmat =0;
    for(l=0; l<2; l++)
    {
        turmat = turmat + (aluno[l][1] + aluno[l][2])/2;

    }
    turmat = turmat /2;
    printf("A madia da turma e: [%2.f] \n", turmat);
    return(0);
}

 

O problema se torna que tenho que percorrer a matriz com o RA informado pelo usuário na opção 2 do menu, verificar se o RA informado já existe, se já existir ai sim substituir a nota que está na posição da matriz aluno.

 

  • Obrigado 1
Postado

...

4 horas atrás, AnsiC disse:

Outro aspecto do problema é que existe relatório consolidado por aluno e por turma. Logo, exibir média por Aluno e por Turna implica em sistema de identificação da Turma para determinação seus alunos, os dos Alunos para determinar a Turma.

 

Então, esse sistema de identificação de alunos é esse tal de RA? Basta escanear (percorrer via loop um arranjo em busca de uma valor), se verifica a existência na matriz: Caso a matriz chegue no último índice sem resultado positivo é porque o aluno ou o RA não existe.

 

UPDATE:

De fato, o dado de sigla RA (Registro Acadêmico) fornece o método pelo qual se identifica um aluno na matriz de alunos. O dado RA está sendo salvo no mesmo índices de dados que as notas bimestrais; a de se supor que fosse relacionado as notas e nunca ao registro do aluno.

 

 

O.k!

  • Curtir 1
Postado

RESOLVIDO!

Obrigado pela força.

 


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

float aluno[2][3], soma, media, turmat = 0, auxW;
int l, x, ra, encontrou =0, encontrou2 = 0, opcao = 0;

//Menu retornando cada função.
int menu()
{
    printf("1- Informe RA/NOTA: \n");
    printf("2- Alterar nota primeiro bimestre: \n");
    printf("3- Alterar nota segundo bimestre: \n");
    printf("4- Imprimir media do aluno: \n");
    printf("5- Imprimir media da turma: \n");
    printf("6- Sair");
    printf("\n");
    printf("Informe uma opcao: \n");
    scanf("%d", &opcao);


    if(opcao==2)
    {
        alterarnota1();
    }

    if(opcao==3)
    {
        alterarnota2();
    }

    if(opcao==4)
    {
        imprimirmedia();
    }
    if(opcao==5)
    {
        imprimirmediaturma();
    }
    if(opcao==6)
    {
        printf("voce optou por sair. \n Ate logo o/ \n");
        exit(0);
    }

    return(0);
}

int alterarnota1()
{
    while(encontrou == 0)
    {
        printf("Informe o RA do aluno que deseja alterar a nota: \n");
        scanf("%d", &ra);

        for(x=0; x<2; x++)
        {
            if(ra == aluno[x][0])
            {
                printf("Informe a nota do primeiro bimestre: \n");
                scanf("%f", &aluno[x][1]);
                printf("Nota alterada com sucesso! \n");
                printf("\n");
                encontrou =1;
            }
        }
        if( encontrou == 0)
        {
            printf("Ra nao encontrado: \n");
        }
    }

    return(0);
}

int alterarnota2()
{
    while( encontrou2 == 0)
    {
        printf("Informe o RA do aluno que deseja alterar a nota: \n");
        scanf("%d", &ra);

        for(x=0; x<2; x++)
        {
            if(ra == aluno[x][0])
            {
                printf("Informe a nota do segundo bimestre: \n");
                scanf("%f", &aluno[x][2]);

                encontrou2 =1;
            }
        }
        if( encontrou2 == 0)
        {
            printf("Ra nao encontrado: \n");
        }
    }

    return(0);
}

int imprimirmedia()
{
    //aqui exibi a media do aluno
    for(l=0; l<2; l++)
    {
        soma=aluno[l][1] + aluno[l][2];
        media = (aluno[l][1] + aluno[l][2])/2;
        printf("RA do aluno [%1.f]\n Nota[%2.f]\n Nota2[%2.f]\n Soma[%2.f]\n media[%2.f] \n", aluno[l][0], aluno[l][1], aluno[l][2], soma, media);
    }
    return(0);
}

int imprimirmediaturma()
{
    //aqui exibir e calcular a média da turma.
    turmat =0;
    for(l=0; l<2; l++)
    {
        turmat = turmat + (aluno[l][1] + aluno[l][2])/2;

    }
    turmat = turmat /2;
    printf("A madia da turma e: [%2.f] \n", turmat);
    return(0);
}


void main()
{
    //Aqui preenche a matriz com o RA e a nota do aluno.
    printf("******* CADASTRAR RA ALUNO ******* \n");
    for(l=0; l<2; l++)
    {
        menu();
        if(opcao == 1)
        {
            printf("Informe o RA: \n");
            scanf("%f", &aluno[l][0]);

            printf("Informe a nota do 1 Bimestre: \n");
            scanf("%f", &aluno[l][1]);

            printf("Informe a nota do 2 Bimestre: \n");
            scanf("%f", &aluno[l][2]);
        }
    }

    while(auxW < 5)
    {

        menu();

        auxW++;
    }

}

 

  • Curtir 1

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...