[ Foro de C++ ]

Ordenamiento en c++

01-Oct-2018 04:33
Anton Romero
1 Respuestas

Mi duda es que tengo que crear un programa donde tengo que ingeresar el documento de los alumnos y las notas. A partir de eso calcular el promedio y mostrar de forma decreciente por el promedio del alumno de esta manera:
DOCUMENTO | NOTA 1 | NOTA 2 | NOTA 3  | PROMEDIO

Me sale ordenar el promedio pero las notas y el documento no estan en la misma fila.
Esto es lo que hice hasta ahora:

 
#include <iostream>
using namespace std;
struct info {
	int dni;
	int nota1;
	int nota2;
	int nota3;
	int prom;
};
 
int main(int argc, char *argv[]) {
	info aaa[99999];
	int n, j , i, aux;
 
	cout << "Alumnos: "; 
	cin >> n;
 
	for (int i=0; i < n; i++) {
		cout << "DNI: ";
		cin >> aaa[i].dni;
		cout << "Nota 1: ";
		cin >> aaa[i].nota1;
		cout << "Nota 2: ";
		cin >> aaa[i].nota2;
		cout << "Nota 3: ";
		cin >> aaa[i].nota3;
		aaa[i].prom=((aaa[i].nota1+aaa[i].nota2+aaa[i].nota3)/3);
	}
 
	for (i=0; i<n; i++)
		for (j=i+1; j<n; j++){
		if (aaa[i].prom>aaa[j].prom){
			aux=aaa[i].prom;
			aaa[i].prom=aaa[j].prom;
			aaa[j].prom=aux;
		}
	}
 
	cout << "Ordenado" << endl;
	for (int i=0; i<n; i++)
		cout << "DNI: " << aaa[i].dni << "| Nota 1: " << aaa[i].nota1 << "| Nota 2: " << aaa[i].nota2 << "| Nota 3: " << aaa[i].nota3 << "| Promedio: " << aaa[i].prom << endl; 
 
 
 
 
	return 0;
}
 


 


02-Oct-2018 10:25
Nacho Cabanes (+37)

No entiendo. La lógica parece correcta (aunque es línea de "cout" tan larga lo hace poco legible). Y, de hecho, lo he probado y parece funcionar bien:

Alumnos: 2
DNI: 1
Nota 1: 1
Nota 2: 1
Nota 3: 1
DNI: 2
Nota 1: 2
Nota 2: 2
Nota 3: 2
Ordenado
DNI: 1| Nota 1: 1| Nota 2: 1| Nota 3: 1| Promedio: 1
DNI: 2| Nota 1: 2| Nota 2: 2| Nota 3: 2| Promedio: 2






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)