Título: AYUDA! fallo en la impresion
Publicado por: NicoSanhueza en 20 Junio 2018, 22:59 pm
Buenas tardes a todos , espero que estén muy bien.
Enunciado del problema: Hacer una estructura llamada alumno, en la cual se tendrán los siguientes miembros: Nombre, edad, promedio, pedir datos al usuario para 3 alumnos, comprobar cuál de los 3 tiene el mejor promedio y posteriormente imprimir los datos del alumno.
Tengo el problema en la impresión de los datos de la persona con mejor promedio. ¿esta bien utilizado el puntero? de no ser así, ¿ como se utiliza correctamente el puntero a estructura para llevarlo a una función?
lo que quería hacer en la función promedio es llevar todo el arreglo a la función( es un arreglo de estructuras)
Llevo mucho tiempo averiguando cual es el error, si me ayudan seria fantástico. gracias de antemano
#include <stdio.h>
typedef struct alumnos { char nombre[20]; int edad; int promedio; }alumno;
void datos(); void promedio();
int main() { alumno arr[3];
datos(arr[0]); datos(arr[1]); datos(arr[2]);
promedio(arr);
return 0; }
void datos(alumno x)// se rellenan los datos en cada estructura { printf("\nNombre alumno:"); scanf("%s",&x.nombre); printf("\nEdad:"); scanf("%d",&x.edad); printf("\nPromedio:"); scanf("%d",&x.promedio);
}
void promedio(alumno* arr) { int i,pos,max=0;
for(i=0;i<3;i++)// se compara el promedio de cada alumno { if(max<arr.promedio) max=arr.promedio; pos=i;// se guarda la posición del alumno con el mejor promedio }
printf("\nEl alumno con la mejor nota es: \n"); printf("\nNombre: %s",arr[pos].nombre); printf("\nEdad: %d",arr[pos].edad); printf("\nPromedio: %d\n\n",arr[pos].promedio);
}
Título: Re: AYUDA! fallo en la impresion
Publicado por: Pieshna en 21 Junio 2018, 06:50 am
Hola amigo, te recomendaria que usaras la cabecera iostream en vez de stdio ya que es mucho mas facil pero para gustos colores jejeje Mira el problema esta aqui if(max<arr.promedio) max=arr.promedio; pos=i;// se guarda la posición del alumno con el mejor promedio
Se te olvido abrir llaves des pues del parentesis y ejecutar if(max<arr.promedio){ max=arr.promedio; pos=i;// se guarda la posición del alumno con el mejor promedio }
Pero si gustas aqui esta el ejercicio#include <iostream>//entrada y salida estandar #include <conio.h>//para el getch(); que es pausar pantalla using namespace std;//evitamos escribir std::cout y std::cin cada vez... Ojo si te marca error aqui puedes eliminar esta linea struct alumnos { char nombre[20]; int edad; int promedio; }alumnos[100];//creamos 100 estructuras ya que no se sabe cuantas va a ingresar el usuario void promedio(); int cantidad;//la hacemos variante universal para que todos los void puedan usar el dato ingresado int main() { cout<<" Cuantos alumnos desea agregar? "; cin>>cantidad;//ingresamos a la variante universal for(int i=0; i<cantidad; i++){ cout<<" Nombre alumno: "; cin>>alumnos[i].nombre; cout<<" Edad: "; cin>>alumnos[i].edad; cout<<" Promedio: "; cin>>alumnos[i].promedio; } promedio();//mandamos a llamar el void cout<<" Presione cualquier tecla para salir..."; getch(); } void promedio() { int i, pos,max=0; for(i=0;i<cantidad;i++) { if(max<alumnos[i].promedio){ max=alumnos[i].promedio; pos=i;// se guarda la posición del alumno con el mejor promedio } } cout<<"\n El alumno con mejor nota es:\n"; cout<<" Nombre: "<<alumnos[pos].nombre<<endl; cout<<" Edad: "<<alumnos[pos].edad<<endl; cout<<" Promedio: "<<alumnos[pos].promedio<<endl; }
Título: Re: AYUDA! fallo en la impresion
Publicado por: NicoSanhueza en 25 Junio 2018, 02:53 am
Hola amigo, te recomendaria que usaras la cabecera iostream en vez de stdio ya que es mucho mas facil pero para gustos colores jejeje Mira el problema esta aqui if(max<arr.promedio) max=arr.promedio; pos=i;// se guarda la posición del alumno con el mejor promedio
Se te olvido abrir llaves des pues del parentesis y ejecutar if(max<arr.promedio){ max=arr.promedio; pos=i;// se guarda la posición del alumno con el mejor promedio }
Pero si gustas aqui esta el ejercicio#include <iostream>//entrada y salida estandar #include <conio.h>//para el getch(); que es pausar pantalla using namespace std;//evitamos escribir std::cout y std::cin cada vez... Ojo si te marca error aqui puedes eliminar esta linea struct alumnos { char nombre[20]; int edad; int promedio; }alumnos[100];//creamos 100 estructuras ya que no se sabe cuantas va a ingresar el usuario void promedio(); int cantidad;//la hacemos variante universal para que todos los void puedan usar el dato ingresado int main() { cout<<" Cuantos alumnos desea agregar? "; cin>>cantidad;//ingresamos a la variante universal for(int i=0; i<cantidad; i++){ cout<<" Nombre alumno: "; cin>>alumnos[i].nombre; cout<<" Edad: "; cin>>alumnos[i].edad; cout<<" Promedio: "; cin>>alumnos[i].promedio; } promedio();//mandamos a llamar el void cout<<" Presione cualquier tecla para salir..."; getch(); } void promedio() { int i, pos,max=0; for(i=0;i<cantidad;i++) { if(max<alumnos[i].promedio){ max=alumnos[i].promedio; pos=i;// se guarda la posición del alumno con el mejor promedio } } cout<<"\n El alumno con mejor nota es:\n"; cout<<" Nombre: "<<alumnos[pos].nombre<<endl; cout<<" Edad: "<<alumnos[pos].edad<<endl; cout<<" Promedio: "<<alumnos[pos].promedio<<endl; }
Muchas gracias! ;-)
|