tengo el siguiente problema, declaro 2 estructuras de las cuales lleno con datos una de ellas en el main, dentro de main tambien hago una llamada a una funcion a la cual le paso como argumento una estructura y retorna una la segunda estructura declarada, esa estructura que retorna la funcion la asigno a una variable del tipo de dicha estructura pero cuando imprimo los datos solo me muestra la primera posicion del arreglo siendo que en ocaciones hay mas de 1 elemento en el array.
Adjunto el codigo para que lo revisen y me ayuden a encontrar el porque?.
Código C:
Ver original
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <string.h> extern unsigned _floatconvert; #pragma extref _floatconvert struct Alumnos{ char Nombre[50]; float Notas[3]; float Examen; float Promedio; }; struct ResultAlumnos{ float promedioMasAlto; char alumnosExamen[50]; //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]={0}; Alumnos notasAlumnos[3]; int i; clrscr(); //reservar espacio para las variables que almacenan nombres //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); for (int pos=0; pos<3; pos++){ } promedioMasAlto = promedioFinalMasAlto(notasAlumnos); return 0; } ResultAlumnos notaMasBajaExamen(struct Alumnos input[]) { float nota; int i,j; ResultAlumnos alumnos[3]={0}; nota = input[0].Examen; for (i=1; i<3; i++){ if (input[i].Examen < nota){ nota = input[i].Examen; } } int k=0; for (j=0; j<3; j++){ if (input[j].Examen == nota){ k++; } /* else{ strcpy(answer[j].alumnosExamen, "--"); } */ } return *alumnos; }; 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; }