Hola a todos
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++)
{
printf("************************************"); printf("\n**** Promedio de Notas Alumno %d ****" , (i
+1)); printf("\n************************************\n\n"); float auxP = 0; //Variable Auxiliar para Sacar el Promedio.
float auxE = 0; //Variable Auxiliar para Sacar la Nota del Examen.
//Introducimos el Nombre.
printf("Ingrese el Nombre del Alumno : "); scanf("%s",notasAlumnos
[i
].
Nombre); //Introducimos las Notas PARCIALES.
for(int e = 0; e <= 2; e++)
{
printf("Ingrese la Nota Numero %d : " , (e
+ 1)); scanf("%f",¬asAlumnos
[i
].
Notas[e
]); }
//Introducimos la Nota del Examen.
printf("Ingrese la Nota del Examen : "); scanf("%f",¬asAlumnos
[i
].
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;
printf("Tu Promedio de notas es : %.1f \n\n", notasAlumnos
[i
].
Promedio ); printf("\n------------------------------------------\n"); }//cierra ciclo for array alumnos
*alumnos = notaMasBajaExamen(notasAlumnos);
for (int pos=0; pos<3; pos++){
printf("\nAlumno : %d = %s\n",pos
,alumnos
[pos
].
alumnosExamen); }
printf("\n------------------------------------------\n");
promedioMasAlto = promedioFinalMasAlto(notasAlumnos);
printf ("El promedio de notas mas alto es: %.1f", promedioMasAlto
); printf("\n------------------------------------------\n");
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;
}
}
printf("Notas mas baja : %.1f\n",nota
); int k=0;
for (j=0; j<3; j++){
if (input[j].Examen == nota){
printf("\n Nombre = %s, posicion = %d\n",input
[j
].
Nombre,k
); strcpy(alumnos
[k
].
alumnosExamen, input
[j
].
Nombre); 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;
}