Mira, ordené tu código, lo orienté a objeto, utilicé librerías comunes y corregí un par de problemas:
#include <iostream>
#include <algorithm>
#include <list>
using namespace std;
class Alumno
{
private:
string nombre;
int edad;
float promedio;
public:
void setNombre(string nombre)
{
this->nombre = nombre;
};
void setNombre(char nombre[50])
{
this->setNombre(string(nombre));
};
string getNombre()
{
return this->nombre;
};
void setEdad(int edad)
{
this->edad = edad;
};
int getEdad()
{
return this->edad;
};
void setPromedio(float promedio)
{
this->promedio = promedio;
};
float getPromedio()
{
return this->promedio;
};
};
class Calculador
{
private:
list<Alumno> alumnos;
public:
void pedirDatos()
{
for(int i = 1; i <= 3; i++)
{
Alumno alumno;
char nombre[50];
int edad;
float promedio;
cout << "Digite nombre del alumno " << i << " : ";
cin >> nombre;
cout << "Digite edad del alumno " << i << " : ";
cin >> edad;
cout << "Digite promedio del alumno " << i << " : ";
cin >> promedio;
alumno.setNombre(nombre);
alumno.setEdad(edad);
alumno.setPromedio(promedio);
this->alumnos.push_back(alumno);
}
};
void calcularMejorPromedio()
{
std::list<Alumno>::iterator mayor;
bool first = true;
// Procesa cada alumno
std::list<Alumno>::iterator alumno = alumnos.begin();
while (alumno != alumnos.end())
{
if(first)
{
first = false;
// Primera iteración.
mayor = alumno;
}
else if(alumno->getPromedio() > mayor->getPromedio())
{
// El promedio del alumno actual es mayor que el
// promedio del alumno mayor guardado en memoria.
mayor = alumno;
}
// Siguiente alumno en la iteracion
++alumno;
}
// Imprimiendo datos
cout << endl << "------------------------------------" << endl;
cout << "El alumno con el mayor promedio es :" << endl;
cout << "Nombre : " << mayor->getNombre() << endl;
cout << "Edad : " << mayor->getEdad() << endl;
cout << "Promedio : " << mayor->getPromedio() << endl;
};
};
int main()
{
Calculador calculador;
// system("color 0b");
calculador.pedirDatos();
calculador.calcularMejorPromedio();
// system("pause");
return 0;
}
Para compilar y ejecutar desde linux:
whk@machine:~/Escritorio$ g++ test.cc -Wall -Wextra -std=gnu++11 -o test
whk@machine:~/Escritorio$ file test
test: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=d0df961dbb63c5df1b4e02ca2430b12c8ecc6646, not stripped
whk@machine:~/Escritorio$ chmod +x test && ./test
Digite nombre del alumno 1 : test1
Digite edad del alumno 1 : 10
Digite promedio del alumno 1 : 5
Digite nombre del alumno 2 : test2
Digite edad del alumno 2 : 11
Digite promedio del alumno 2 : 6
Digite nombre del alumno 3 : test3
Digite edad del alumno 3 : 7
Digite promedio del alumno 3 : 7
------------------------------------
El alumno con el mayor promedio es :
Nombre : test3
Edad : 7
Promedio : 7
Ahora es solo cuestión de crear todas las validaciones de entrada de valores.
También lo puedes compilar en windows sin problemas generando un .exe. Trata de ser mas ordenado cuando programes, usa comentarios, ten cuidado con las identaciones, acostumbrate a utilizar llaves foraneas siempre, etc, intenta que tu código siempre sea legible y facil de entender por otras personas.
Si vas a programar con estructuras y punteros te recomiendo mejor utilizar c en ves de c++.