Styiling?

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
What is your question?

If you have the same question as in your other post (http://www.cplusplus.com/forum/beginner/267623/) then please respond to just one of these threads.
Topic archived. No new replies allowed.