Foro de elhacker.net

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:
Código:
#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

Código
  1. maximo1 = leer numero
  2. maximo2 = leer numero
  3. si maxmo2 > maximo1 -> intercambiar maximo1 y maximo2
  4.  
  5. ciclo hasta terminar {
  6.     leer numero
  7.     si numero > maximo2 {
  8.         si numero > maximo1 {
  9.             maximo2 = maximo1
  10.             maximo1 = numero
  11.         } else {
  12.             maximo2 = numero
  13.         }
  14.     }
  15. }
  16.  
  17. imprimir maximo1 y maximo2
  18.