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

Repetição com for zera variavel


sanchessd

Pergunta

Bom pessoal , to no 1º semestre de ADS, na cadeira de Algoritmos e programação to com um problema no exercicio

Ele pede quantos alunos tem na turma, pede 3 notas cada aluno e calcula sua media, depois que calcular a media de todos alunos calcula a media geral da turma.

segue o codigo, o problema é que para fazer a media geral da turma ele pega a nota somente do ultimo aluno, ou seja, a cada vez que repete a variavel zera o valor,

#include<stdio.h>

main(){
       int alunos,i;
       float nota1,nota2,nota3,geral,media1,media2;
       
       printf("Quantos alunos tem na turma ? ");
         scanf("%d",&alunos);
       
       for(i=1; i<=alunos; i++){
       printf("\nDigite primeira nota (aluno[%d]): ",i);
         scanf("%f",&nota1);
       printf("\nDigite segunda nota (aluno[%d]): ",i);
         scanf("%f",&nota2);
       printf("\nDigite terceira nota (aluno[%d]): ",i);
         scanf("%f",&nota3);
                          
       media1=(nota1+nota2+nota3)/3;
       geral=(nota1+nota2+nota3); //varialvel que deveria armazenar o valor das 3 notas de cada aluno para fazer a media geral da turma
       printf("\nMedia do aluno:%5.2f\n",media1);
       }
       
       media2=geral/alunos;
       printf("\nMedia geral da turma: %5.2f\n",media2);  
         
       getchar();
}

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Você não está pensando coletivamente.

Pense no seguinte: você tem uma máquina que recebe o dado das pessoas, como suas notas. Quando requisitada, ela calcula a média de todas as notas.

Porém, a cada nova pessoa que está digitando as informações na máquina, ela está reescrevendo sobre os dados da última pessoa. O que é necessário para corrigir isso? Fazer a máquina ter memória das pessoas passadas, é claro!

Como fazer isso? Com arrays. http://pt.wikipedia.org/wiki/Array http://pt.wikibooks.org/wiki/Programar_em_C/Vetores

Leia um pouco desses sites e acho que o erro no seu código estará aparente. Se ainda não tiver sucesso, poste novamente para que eu te instrua um pouco mais!

ps: sobre seu for, lembre-se que arrays em C começam no 0, e não no 1

Abraços!

Link para o comentário
Compartilhar em outros sites

  • 0

Primeira mente obrigado pela resposta amigo, estou pesquisando agora sobre variaveis compostas, pois não aprendi ainda na facul,

consegui resolver o problema colocando um somatorio. Veja como ficou:

#include
#include
main(){
       int alunos,i;
       float nota1,nota2,nota3,media1,media2,geral;
       
       printf("Quantos alunos tem na turma ? ");
         scanf("%d",&alunos);
       geral=0; //Inicializando somatorio
       for(i=1; i<=alunos; i++){
       printf("\nDigite primeira nota (aluno[%d]): ",i);
         scanf("%f",¬a1);
       printf("\nDigite segunda nota (aluno[%d]): ",i);
         scanf("%f",¬a2);
       printf("\nDigite terceira nota (aluno[%d]): ",i);
         scanf("%f",¬a3);
                          
       media1=(nota1+nota2+nota3)/3;
       
       printf("\nMedia do aluno:%5.2f\n",media1);
       geral+= media1;
       }
       
       media2=geral/alunos; // Somatorio
       printf("\nMedia geral da turma: %5.2f\n",media2);  
         
system("pause");
}

Observação: Comecei o for "i=1" pois imprimi para notificar o usuario.

exemplo programa sendo executado:

Quantos alunos tem na turma ? 2

Digite primeira nota (aluno[1]): 10 //[1] está mostrando variavel "i"

Digite segunda nota (aluno[1]): 10

Digite terceira nota (aluno[1]): 10

Media do aluno:10.00

Digite primeira nota (aluno[2]): 5

Digite segunda nota (aluno[2]): 5

Digite terceira nota (aluno[2]): 5

Media do aluno: 5.00

Media geral da turma: 7.50

Pressione qualquer tecla para continuar. . .

Valeu pela ajuda, me cadastrei hoje no forum e já recebi ajuda imediata, muito bom, contribuirei com meus conhecimentos também!

Editado por sanchessd
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,2k
    • Posts
      652k
×
×
  • Criar Novo...