Jump to content
Fórum Script Brasil
  • 0

Repetição com for zera variavel


sanchessd

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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!

Edited by sanchessd
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...