Cita de: elcentral_ en 6 Diciembre 2020, 17:05 PM
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.
Yo te sugeriría terminar de ordenar el vector de mayores que al final del insertado, además no es necesario crear el método de ordenamiento cuando en C++ ya está pre-hecho con la función sort:
Código (cpp) [Seleccionar]
#include <iostream>
#include <vector>
#include <algorithm>
int main(int argc,char*argv[])
{
const int TERMINADOR=-1;
double dato, referencia;
std::vector<double> vector,mayores_que;
int i,cont,k;
std::cout << "k valores mayores que."
<< "\nIntroduzca reales con terminador "
<< TERMINADOR << "\n";
do
{
std::cout << "\nIntroduzca un número real: ";
std::cin >> dato;
if(dato!=TERMINADOR)
vector.push_back(dato);
}while(dato!=TERMINADOR);
std::cout << "\nIntroduzca el valor de referencia: ";
std::cin >> referencia;
do
{
std::cout << "\nIntroduzca la dimensión máxima del vector a mostrar: ";
std::cin >> k;
}while(k<0||k>vector.size());
std::cout<<std::endl;
for (i=0,cont=1;i<vector.size()&&cont<=k;i++)
{
if(vector[i]>=referencia)
{
mayores_que.push_back(vector[i]);
cont++;
}
}
std::sort(mayores_que.begin(),mayores_que.end());
if(mayores_que.size()>0)
{
std::cout << "Los números mayores o iguales a " << referencia << " son: ";
for (i=0;i<mayores_que.size();i++)
std::cout << mayores_que[i] << " ";
std::cout<<std::endl;
}
return 0;
}
B#