[ Foro de C++ ]
Necesito leer datos de un vector y si son superiores a una referencia dada, meterlos en otro vector de forma ordenada de menor a mayor. Este vector es de dimension maxima dada, es decir acabaré de leer datos del vector primero cuando la dimension del segundo llegue al limite o cuando se acabe el primer vector.
Tengo esto, pero no está bien y no se seguir:
/*Ejercicio 3*/
#include <iostream>
using namespace std;
int main(){
const int TERMINADOR=-1;
double dato, referencia;
const int TAMANIO=1e5;
double vector[TAMANIO], mayores_que[TAMANIO];
int utilizados_vector, k;
cout << "k valores mayores que."
<< "\nIntroduzca reales con terminador "
<< TERMINADOR << "\n";
utilizados_vector=0;
cout << "\nIntroduzca un número real: ";
cin >> dato;
while ( (dato!=TERMINADOR)&&(utilizados_vector<TAMANIO)) {
vector[utilizados_vector]=dato;
utilizados_vector++;
cout << "\nIntroduzca un número real (ó -1 para terminar): ";
cin >> dato;
}
cout << "\nIntroduzca el valor de referencia: ";
cin >> referencia;
cout << "\nIntroduzca la dimensión máxima del vector a mostrar: ";
cin >> k;
int cont=1;
int i=1;
double a_insertar, aux;
while ((i<utilizados_vector)&&(cont<=k)) {
if (vector[i]>=referencia) {
a_insertar=vector[i];
if (cont!=1) {
for (int j=1; j<=cont; j++) {
if (mayores_que[j]>a_insertar) {
aux=mayores_que[j];
mayores_que[j]=a_insertar;
mayores_que[j++]=aux;
}
}
}
else {
mayores_que[cont]=a_insertar;
}
cont++;
}
i++;
}
for (int i=1; i<=cont; i++) {
cout << mayores_que[i] << " ";
}
return 0;
}
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)