Write your question here.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
std::vector<int> enterosMayores(const std::vector<std::string>& datos, int pivote){
std::vector<int> vMayores;
int entero = 0;
for(unsigned i = 0; i < datos.size(); i++){
//std::cout << std::stoi(datos[i]) << std::endl;
for (unsigned j = 0; j < datos[i].size(); j++){
entero <<= 1;
if (datos[i][j] == '1'){
entero |= 1;
}else{
entero |= 0;
}
}
if(entero > pivote){
vMayores.push_back(entero);
}else{
std::cout << "No hay numeros mayores que el pivote." << std::endl;
}
entero = 0;
}
return vMayores;
}
int main(int argc, char* argv[]){
std::cout << "El programa contiene " << argc << " argumentos." <<std::endl;
if(argc < 2){
std::cerr << "Falta espeficicar el nombre del archivo." << std::endl;
return 1;
}
//Colocamos el datos y .dat al nombre del archivo.
std::string nombreArchivo = argv[1];
std::size_t Inicial = nombreArchivo.find("datos");
if(Inicial == std::string::npos){
std::cerr << "Falta la palabra '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");
}
//Ahora abrimos el fichero y almacenamos los datos en un vector
std::ifstream fichDatos(nombreArchivo);
if(fichDatos.fail() ){
std::cerr << "No se ha podido abrir correctamente." << std::endl;
return 2;
}
std::string datoLeido;
std::vector<std::string> vDatos;
fichDatos >> datoLeido;
while(fichDatos.good() ){
vDatos.push_back(datoLeido);
fichDatos >> datoLeido;
}
int pivote = 32;
if(argc >= 3){
pivote = std::stoi(argv[2]);
std::cout << "Pivote: " << pivote << std::endl;
}else{
std::cerr << "Pivote: 32" << std::endl;
}
std::vector<int> vMayores = enterosMayores(vDatos, pivote);
for (unsigned i = 0; i < vMayores.size(); i++){
std::cout << "Resultado: " << vMayores[i] << " (" << std::hex << std::showbase
<< vMayores[i] << "), " << std::dec;
}
std::cout << std::endl;
return 3;
}
|
Last edited on