Hola necesito ayuda con el siguiente programa. (ARREGLOS)

Iniciado por padiuwu, 5 Agosto 2018, 04:28 AM

0 Miembros y 1 Visitante están viendo este tema.

padiuwu

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++)
        }
    }

}

CalgaryCorpus

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
Aqui mi perfil en LinkedIn, invitame un cafe aqui