Ir para conteúdo
Fórum Script Brasil
  • 0

media


newnoob

Pergunta

galera, to fazendo um program para calcular a media de uma turma, eu peçopra digitar o numero de alunos e as notas de cada aluno, o programa ta compilando mas não ta fazendo as medias, eu digio as medias, mas dai ele para, não faz u calculo da media, acho que devo ta chamando a função errado ou algo assim, vo posta o codigo aqui em baixo para ver se alguém pode me ajuda.

obrigado.

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

typedef struct
{
    char nome[80];
    float nota;
}aluno_t;

float media_turma (aluno_t *turma, int quantidade_al)
{
    int i = 0;
    float media,soma = 0.0;
    for (i=0;i< quantidade_al;i++)
    {   
        printf ("\nDigite a nota para fazer a media:\n\r");
        scanf ("%f", &turma[i].nota);
        soma = soma + turma[i].nota;
    }
    return soma/quantidade_al;
}

int main()
{
    int q_alunos,i;
    aluno_t *turma;
    printf ("\nDigite a quantidade de alunos que a turma possui:\n");
    scanf ("%d", &q_alunos); 
    turma = (aluno_t*)malloc(q_alunos*sizeof(aluno_t));
    media_turma(turma,q_alunos);
    free (turma);
    system ("pause");
    return (0);
}

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

A função está retornando o valor, e não imprimindo na tela:

return soma/quantidade_al;
Ela (ou o código que está a chamando) deve imprimir com o printf. No caso deste valor (float), deve-se usar %f. Exemplo:
printf("Media: %f\n", media_turma(turma, quantidade_alunos));

Outra coisa, eu aconselharia você a trocar o system("pause") por getchar(), da stdio.h. Aqui, por exemplo, onde eu uso Linux, system("pause") não funciona. getchar() funciona em qualquer lugar.

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

cara fiz a modificação que você me mando, mas mesmo assim ele só pede as notas, na hora de fazer a media ele não faz, sera que tem alguma coisa errada dentro da função pra fazer a media?

sera que to armazenando os valores no lugar certo?

e a media ta certa a formula pra calcula ela?

aqui vo posta de novo o programa já com as modificações

vlw

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

typedef struct
{
    char nome[80];
    float nota;
}aluno_t;

float media_turma (aluno_t *turma, int quantidade_al)
{
    int i = 0;
    float media,soma = 0.0;
    for (i=0;i< quantidade_al;i++)
    {   
        printf ("\nDigite a %d nota para fazer a media:\n", i+1);
        scanf ("%f", &turma[i].nota);
        soma = soma + turma[i].nota;
    }
    return soma/quantidade_al;
}

int main()
{
    int q_alunos,i;
    aluno_t *turma;
    printf ("\nDigite a quantidade de alunos que a turma possui:\n");
    scanf ("%d", &q_alunos); 
    turma = (aluno_t*)malloc(q_alunos*sizeof(aluno_t));
    printf ("\nMedia:%f",media_turma(turma,q_alunos));
    free (turma);
    getchar();
    return (0);
}

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui parece estar tudo ok:

durub@zerobot:~/scriptbrasil$ ./media

Digite a quantidade de alunos que a turma possui:

3

Digite a 1 nota para fazer a media:

10

Digite a 2 nota para fazer a media:

9

Digite a 3 nota para fazer a media:

8

Media:9.000000

media = (10 + 9 + 8) / 3 = 27 / 3 = 9

Resultado correto.

Ele não está mostrando a média para você?

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Se você recompilar, a execução reflete o que você alterou no código. Se você só re-executar o programa, você ainda está executando o código antigo.

Tente criar um novo arquivo, colar o conteúdo e ver o que acontece quando você aperta F9. E verifique por possíveis erros de compilação! (aqui foi ok para compilar seu código)

Abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

fiz o que você falo, abri um novo codigo fonte, e coloquei todas as variaveis como quantiade_al, pra ver se era esse o problema, mas não

ta acontecendo ainda a mesma coisa, depois dedigita as notas o programa não calcula a media e fecha,

#include <stdlib.h>

#include <stdio.h>

typedef struct

{

char nome[80];

float nota;

}aluno_t;

float media_turma (aluno_t *turma, int quantidade_al)

{

int i = 0;

float media,soma = 0.0;

for (i=0;i< quantidade_al ;i++)

{

printf ("\nDigite a %d nota para fazer a media:\n", i+1);

scanf ("%f", &turma.nota);

soma = soma + turma.nota;

}

return soma/quantidade_al;

}

int main()

{

int quantidade_al,i;

aluno_t *turma;

printf ("\nDigite a quantidade de alunos que a turma possui:\n");

scanf ("%d", &quantidade_al);

turma = (aluno_t*)malloc(quantidade_al*sizeof(aluno_t));

printf ("\nMedia:%f",media_turma(turma,quantidade_al));

free (turma);

getchar();

return (0);

}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...