O meu programa esta a bugar quando eu conto o total de alunos reprovados e aprovados, nunca da o numero certo.. vai sempre incrementando mais um valor..,ajudem-me pfv..
#include <stdio.h>
#include <stdlib.h>
typedef struct Aluno
{
char nome[50];
int teste;
int trab;
};
main()
{
FILE *fp;
struct Aluno vet[10];
fp=fopen("Alunos.txt","w");
int cont=0,i,somateste=0,somatrab=0,op,reprovado=0,aprovado=0;
int soma[10];
float med[10] ,medglobal, nota[10];
while (op!=7)
{
printf("\n");
printf("------Menu------:");
printf("\n");
printf("1 - Introduza alunos \n");
printf("2 - Listar alunos \n");
printf("3 - Media dos trabalhos \n");
printf("4 - Media dos testes \n");
printf("5 - Media global dos alunos\n");
printf("6 - numero de aprovados e reprovados \n");
printf("7 - Sair \n");
printf("\n");
printf("Introduza a sua opcao \n");
scanf("%d",&op);
switch (op)
{
case 1:
{
printf("Introduza o nome do aluno \n");
scanf(" %s",&vet[cont].nome);
printf("Introduza a nota do teste \n");
scanf(" %d",&vet[cont].teste);
printf("Introduza a nota do trabalho \n");
scanf(" %d",&vet[cont].trab);
cont++;
break;
}
case 2:
{
for (i=0; i<cont; i++)
{
printf("\n");
fprintf(fp,"Nome: %s \n",vet[i].nome);
fprintf(fp,"Teste: %d \n",vet[i].teste);
fprintf(fp,"Trabalho: %d \n",vet[i].trab);
}
break;
}
case 3:
{
for (i=0; i<cont; i++)
{
somatrab= somatrab +vet[i].trab ;
}
printf("\n");
fprintf(fp, "Media dos trabalhos = %.2f \n",somatrab/(float)cont);
break;
}
case 4:
{
for (i=0; i<cont; i++)
{
somateste= somateste + vet[i].teste;
}
printf("\n");
fprintf(fp,"Media dos testes = %.2f \n",somateste/(float)cont);
break;
case 5:
{
for (i=0; i<cont; i++)
{
medglobal= (somateste+somatrab)/2 ;
}
printf("\n");
fprintf(fp, "Media global e = %.2f \n",medglobal/(float)cont);
break;
}
case 6:
for (i=0;i<cont;i++){
{
nota[i] == vet[i].teste+vet[i].trab/(float)2 ;
if (nota[i] <=9.5)
reprovado++;
if (nota[i] >9.5)
aprovado++;
}
printf(" %d aprovado \n", aprovado);
printf(" %d reprovado \n", reprovado);
fprintf(fp, " %d aprovado \n", aprovado);
fprintf(fp, " %d reprovado \n", reprovado);
break;
default:printf("");break;
fclose(fp);
}
}
}
}
}