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:
Y para sacar el codigo de en medio supuestamente haria esto:
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?
Código [Seleccionar]
#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 [Seleccionar]
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?