Lea n calificaciones e imprima las dos mas altas:
#include <iostream>
using namespace std;
void m();
int main()
{
m();
return 0;
}
void m(){
int n, mayor, cal;
cout << "Ingrese el numero de calificaciones: ";
cin >> n;
int arreglo[n];
for(int i=0; i<n; i++){
cout << "Calificacion #" << i+1 << ": ";
cin >> cal;
}
for (int j=0; j<n; j++){
for (int k=1; k<n; k++){
if (arreglo [j] < arreglo [k]){
int aux;
aux= arreglo [j];
arreglo [j] = arreglo [k];
arreglo [k] = aux;
}
for (int l=0; l<2; l++)
}
}
}
No necesitas guardar todos los datos en un arreglo, ni tampoco necesitas ordenarlos.
Si lees los datos 1 a 1, puedes actualizar 2 variables, la que tenga el maximo y la que tenga una despues del maximo. Si las llamas maximo1 y maximo2, cuando lees un numero, si ese numero es menor que maximo2, no es necesario cambiar ni maximo1 ni maximo2, pues esos valores siguen siendo los mas grandes. Si es mas grande que el maximo2, hay que, al menos, deshacerse del maximo2 y actualizar a los nuevos valores, dependiendo si es o no mayor que el maximo1
maximo1 = leer numero
maximo2 = leer numero
si maxmo2 > maximo1 -> intercambiar maximo1 y maximo2
ciclo hasta terminar {
leer numero
si numero > maximo2 {
si numero > maximo1 {
maximo2 = maximo1
maximo1 = numero
} else {
maximo2 = numero
}
}
}
imprimir maximo1 y maximo2