Hola tengo un problema con un código que estoy haciendo(soy nuevo en esto).Tengo que hacer la media de n numero y cuando se introduzca un numero negativo se pare.Esto es es lo que tengo hecho:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int contador=0;
float media=0,notas=0,total_notas=0;
printf("Ingrese la nota o un numero negativo para salir: ");
scanf("%f",¬as);
while(notas>=0){
contador++;
total_notas=total_notas+notas;
printf("Ingrese la nota o un numero negativo para salir: ");
scanf("%f",¬as);
}
if (contador!=0)
media=total_notas/contador;
printf("Total de alumnos presentados a examen: %d\n",contador);
printf("Nota media: %f\n",media);
return 0;
}
El problema es que al hacer la media me cuenta el numero negativo y la media sale mal.¿Cómo podría arreglarlo?
Gracias de antemano
EDIT: Ya lo he solucionado
Así me queda el código
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main(int argc, char *argv[]) {
float contador=0,aprobado=0,suspenso=0,notable=0,deficiente=0,sobresaliente=0;
float media=0,notas=0,total_notas=0;
float por_sobre=0,por_not=0,por_apro=0,por_sus=0,por_defi=0;
do{
;
printf("Ingrese la nota o numero negativo para salir: ");
scanf("%f",¬as);
if (notas<10 & notas>=0){
contador++;
if(notas>=9 )
sobresaliente++;
if(notas>=7 & notas<9)
notable++;
if(notas>=5 & notas<7)
aprobado++;
if(notas>=2 & notas<5)
suspenso++;
if(notas<2)
deficiente++;
total_notas=total_notas+notas;
}
}while(notas>0);
media=total_notas/contador;
por_sobre=(sobresaliente/contador)*100;
por_not=(notable/contador)*100;
por_apro=(aprobado/contador)*100;
por_sus=(suspenso/contador)*100;
por_defi=(deficiente/contador)*100;
printf("Total alumnos presentados a examen: %g\n",contador);
printf("Numero de sobresalientes: %g (%.2f)\n",sobresaliente,por_sobre);
printf("Numero de notable: %g (%.2f)\n",notable,por_not);
printf("Numero de aprobados: %g (%.2f)\n",aprobado,por_apro);
printf("Numero de suspensos: %g (%.2f)\n",suspenso,por_sus);
printf("Numero de muy deficientes: %g (%.2f)\n",deficiente,por_defi);
if(media>=5){
printf("Nota media: %.2f (Aprobado)\n",media);
}
else{
printf("Nota media: %.2f (Suspenso)\n",media);
}
return 0;
}
¿De que forma podría optimizarlo más?