Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: padiuwu en 5 Agosto 2018, 04:28 AM

Título: Hola necesito ayuda con el siguiente programa. (ARREGLOS)
Publicado por: padiuwu en 5 Agosto 2018, 04:28 AM
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++)
        }
    }

}
Título: Re: Hola necesito ayuda con el siguiente programa. (ARREGLOS)
Publicado por: CalgaryCorpus en 5 Agosto 2018, 05:19 AM
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