Solicito su ayuda ya que no hay caso que haga funcionar este código y la verdad no se que este mal, me puse a jugar en C un rato para refrescar conocimientos pero me encontré con este problema que no puedo resolver.
Código C:
Ver original
#include <stdio.h> #include <stdlib.h> #include <conio.h> extern unsigned _floatconvert; #pragma extref _floatconvert struct Alumnos{ char* Nombre; float Notas[3]; float Examen; float Promedio; }; struct ResultAlumnos{ float promedioMasAlto; char* alumnosExamen; //almacena los alumnos con la nota mas baja en el examen. }; //prototipo de funciones ResultAlumnos notaMasBajaExamen(struct Alumnos input[]); //Funcion que Verifica la Nota menor que obtuvo un alumno en el EXAMEN. float promedioFinalMasAlto(struct Alumnos input[]); int main() { float promedioMasAlto; ResultAlumnos alumnos[3]; Alumnos notasAlumnos[3]; int i; clrscr(); //Introducimos las Notas. for(i = 0; i <= 2; i++) { float auxP = 0; //Variable Auxiliar para Sacar el Promedio. float auxE = 0; //Variable Auxiliar para Sacar la Nota del Examen. //Introducimos el Nombre. //Introducimos las Notas PARCIALES. for(int e = 0; e <= 2; e++) { } //Introducimos la Nota del Examen. //Sacamos el Promedio. for(int f = 0; f <= 2; f++ ){auxP = auxP + notasAlumnos[i].Notas[f];} auxP /= 3; auxP *= 0.7; //Nota Examen. auxE = notasAlumnos[i].Examen; auxE *= 0.3; //Guardamos el Promedio Final. notasAlumnos[i].Promedio = auxE + auxP; }//cierra ciclo for array alumnos *alumnos = notaMasBajaExamen(notasAlumnos); promedioMasAlto = promedioFinalMasAlto(notasAlumnos); return 0; } ResultAlumnos notaMasBajaExamen(struct Alumnos input[]) { float nota; int index,i,j; int repite=0; //char* nombre; ResultAlumnos answer[3]; nota = input[0].Examen; //nombre = input[0].Nombre; //printf("Nombre : %s",input[0].Nombre); j=0; for (i=1; i<3; i++){ if (input[i].Examen < nota){ nota = input[i].Examen; answer[j].alumnosExamen = input[i].Nombre; j++; } else if(input[i].Examen == nota){ answer[j].alumnosExamen = input[i].Nombre; repite = 1; j++; } } if(repite == 1) answer[j].alumnosExamen = input[0].Nombre; else answer[0].alumnosExamen = input[0].Nombre; return *answer; }; float promedioFinalMasAlto(struct Alumnos input[]) { float promedio; int i; promedio = input[0].Promedio; for (i=0; i<3; i++){ if (input[i].Promedio > promedio){ promedio = input[i].Promedio; } } return promedio; }
La función que me da problemas es "notaMasBajaExamen" ya que la otra funciona bien, la idea de esa función es que retorne una estructura conteniendo el o los nombre(s) de el o los alumno(s) que tuvieron la nota mas baja del examen, los recorro con for en vez de hacerlo estáticos porque la idea una vez que funcione es probar cambiando el tamaño del array de estructuras.
Saludos