Ya he corregido algunas cosas pero me sigue sin salir. Uno de los valores insertados en el nuevo vector, es 0, concretamente el primero...
Código
#include <iostream> using namespace std; void InsertarOrdenado (double valor, double v[], int size) { int indiceInsercion=0; // indice que le corresponde al elemento while ((indiceInsercion<size)&&(v[indiceInsercion]<valor)) { indiceInsercion++; } if (indiceInsercion!=size) { // si no se inserta al final, hay que mover elementos for (int i=size-1; i>=indiceInsercion; i--) { v[i]=v[i-1]; } } v[indiceInsercion]=valor; } 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=0; int i=0; while ((i<utilizados_vector)&&(cont<k)) { if (vector[i]>=referencia) { InsertarOrdenado (vector[i], mayores_que, cont); cont++; } i++; } for (int i=0; i<cont; i++) { cout << mayores_que[i] << " "; } return 0; }