struct Clase{//Definimos la estructura
String nombre;
float altura;
float peso;
};
void setup(){
Serial.begin(9600);
programa();
}
void loop() {}
void programa() {
Clase alumnos[3];
for(int i = 0; i < 3; i++){//Recojo info del array principal
Serial.println("Alumno " + String(i+1) + ":");
Serial.println("¿Cuál es el nombre del alumno " + String(i+1) + "?:");
limpiar();
esperar();
alumnos[i].nombre = Serial.readStringUntil("\n");
Serial.print(alumnos[i].nombre);
esperar();
Serial.println("¿Cuál es la altura del alumno " + String(i+1) + "?:");
limpiar();
esperar();
alumnos[i].altura = Serial.parseFloat();
Serial.println(alumnos[i].altura);
esperar();
Serial.println("¿Cuál es el peso del alumno " + String(i+1) + "?:");
limpiar();
esperar();
alumnos[i].peso = Serial.parseFloat();
Serial.println(alumnos[i].peso);
esperar();
}//-------------------Fin recoger información del array principal
//Calculo tamaño array y llamo a la función ordenar ascendentemente
int n = sizeof(alumnos)/sizeof(alumnos[0]);
bubbleSort(alumnos, n);
//--------------------
Serial.println("Imprimimos por pantalla el array ordenado: ");
Clase ordenar[4];//Creo una copia del array principal anulando la posición dos y aumentando en uno su tamaño
for(int i = 0; i < 3; i++){
if(i > 1){//Me paso la posición 2
ordenar[i+1]=alumnos[i];
Serial.print(ordenar[i+1].nombre);
Serial.println(ordenar[i+1].peso);
}else {//Antes de la posición 2
ordenar[i]=alumnos[i];
Serial.print(ordenar[i].nombre);
Serial.println(ordenar[i].peso);
}
}
}
void bubbleSort(Clase alumnos[], int n){
for(int i = 0; i < n-1; i++){
for(int j = 0; j < n-i-1; j++){
if(alumnos[j].peso > alumnos[j+1].peso){
Clase temp = alumnos[j];
alumnos[j] = alumnos [j+1];
alumnos[j+1] = temp;
}
}
}
}
void limpiar(){
while(Serial.available())
Serial.read();
}
void esperar(){
while(!Serial.available());
}