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);
}
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;
}
Cita de: 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;
}
Muchas gracias! ;-)