Ir ao conteúdo
  • Cadastre-se
Marcelo Bialeski

C Exercicio Mini Sistema Acadêmico.

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

...

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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

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

×