/* Devolver un vector de enteros con aquellos que son menor que el pivote
*/
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
std::vector<int> menores(const std::string& datos, int pivote){
std::vector<int> vMenores;
for(std::size_t i = 0;i < datos.size(); i++){
std::cout << "La representacion decimal es: " << std::dec << std::endl;
if(datos[i] < pivote){
vMenores.push_back(datos[i]);
}else{
std::cerr << "No hay numeros menores que el pivote." << std::endl;
}
}
return vMenores;
}
int main(int argc, char* argv[]){
std::cout << "El programa contiene " << argc << " argumentos"
<< std::endl;
if(argc < 2){
std::cerr << "Falta espeficiar el nombre del archivo." << std::endl;
return 1;
}
//Colocamos el datos y el .dat al nombre.
std::string nombreArchivo = argv[1];
std::size_t Inicial = nombreArchivo.find("datos");
if(Inicial == std::string::npos){
std::cerr << "Falta el nombre 'datos'." << std::endl;
nombreArchivo.insert(0,"datos");
}
std::size_t Final = nombreArchivo.find(".dat");
if(Final == std::string::npos){
std::cerr << "No hay .dat" << std::endl;
std::size_t tamFinal = nombreArchivo.length();
nombreArchivo.insert(tamFinal, ".dat");
}
//Abrimos el fichero y alcamenamos los datos que hay dentro en un vector
std::ifstream fichDatos(argv[1]);
if(fichDatos.fail() ){
std::cerr << "No se ha podido abrir correctamente el fichero."
<< std::endl;
return 2;
}
int datoLeido;
std::vector<int> vDatos;
fichDatos >> datoLeido;
while(fichDatos.good() ){
vDatos.push_back(datoLeido);
fichDatos >> datoLeido;
}
//Declaracion del pivote.
int pivote = 32;
if( argc >= 3){
pivote = std::stoi(argv[2]);
}else{
std::cout << "El pivote toma el valor 32." << std::endl;
}
std::vector<int> vMenores = menores(vDatos, pivote);
for(std::size_t a = 0; a < vMenores.size(); a++){
std::cout << vMenores[a] << ", ";
}
std::cout << std::endl;
return 3;
}