Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Borito30 en 11 Marzo 2017, 05:38 am



Título: Sacar numeros en medio de un array usando c++
Publicado por: Borito30 en 11 Marzo 2017, 05:38 am
Hola hay alguna de sacar de forma correcta y eficiente dos numeros que se encuentran en un array si yo conozco su máximo y su mínimo? El código sería del siguiente modo:
Código:
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;

int num1,z,l,peque,grande;
int numero,division,resto,i,a,j;
int arr[4];
int mayor[4];
int menor[4];
int mayor1;
int fin = 0;
int menor1;
int contador = 0;

int prueba(int num){
    division = num;
    resto = num;

    for(i=0;i<=3;i++){
        resto = division%10;
        if(i==3){
            arr[i] = division;
        }else{
            arr[i] = resto;
        }
        division/=10;
    }
    int o,mini,maxi,u;


    mini=arr[0];
    maxi=mini;


    for(o=0;o<4;o++)
            {
            if (arr[o]<mini) mini=arr[o];
            if (arr[o]>maxi) maxi=arr[o];
            }

    peque = 0;

   
    mayor [0] = maxi;
    mayor [1] = grande;
    mayor [2] = peque;
    mayor [3] = mini;

    menor [0] = mini;
    menor [1] = peque;
    menor [2] = grande;
    menor [3] = maxi;

    stringstream ss;

    ss<<menor[0];   //this can be run as a loop
    ss<<menor[1];
    ss<<menor[2];
    ss<<menor[3];

    ss>>menor1;

    stringstream s;

    s<<mayor[0];   //this can be run as a loop
    s<<mayor[1];
    s<<mayor[2];
    s<<mayor[3];
    int con1,con2;
    con1=0;
    con2=0;
    s>>mayor1;
    fin = mayor1 - menor1;
}

int main(){
/* Declaramos el array y le damos valores */
    cout << "Introduce un numero: ";
    cin >> numero;
    fin = numero;
    while(fin!=6174){
        prueba(fin);
        break;
        cout << fin << " = " << mayor1 << " - " << menor1;
        cout << "\n";
        contador++;
    }
    cout << "Numero de intentos: " << contador;
    return 0;
}

Y para sacar el codigo de en medio supuestamente haria esto:
Código:
for(z=0;z<4;z++){
        num1=arr[z];
        if(arr[z] != mini || arr[z] != maxi){
            for(l=0;l<4;l++){
                if(arr[l]<num1 && arr[l] != maxi && arr[l] != mini){
                    peque=arr[l];
                    cout << peque;
                }else if(arr[l]>num1 && arr[l] != maxi && arr[l] != mini){
                    grande = arr[l];
                    cout << grande;
                }
            }
    }

Claro que cuando lo que cite anteriormente me repite los numeros muchas veces por lo que supongo que lo estaré haciendo mal. Hay alguna maneras de sacar los numeros de en medio. Tengo el numero 1234. Saque el máximo 4, el mínimo 1 pero como podría sacar el 2 y 3 por separado?


Título: Re: Sacar numeros en medio de un array usando c++
Publicado por: dato000 en 11 Marzo 2017, 18:17 pm
Tendria que hacerse otro loop en donde tome los elementos que no sean los que se estan necesitando (max & min).

No tengas tanto miedo por usar recorridos for, si intentas romper el recorrido, seguro se quedaran elementos que necesitas en el camino, lo mejor es recorrer toda el array, y una vez comprobados los filtros, verificar los resultados, si se necesita algo adicional, simple, filtra nuevamente.