CB100

Notas, resueltos y tps de la materia Algoritmos y Estructuras de Datos
Index Commits Files Refs README
guias/1/ej17.cpp (1775B)
   1 #include <iostream>
   2 #include <vector>
   3 
   4 void vector_print(std::vector<int> v) {
   5     std::cout << "[";
   6     for(size_t i = 0; i < v.size(); ++i) {
   7         std::cout << v[i] << ((v.size() == i+1) ? "" : ", ");
   8     }
   9     std::cout << "]\n";
  10 }
  11 
  12 void vector_log(std::vector<int> v) {
  13     int min, max;
  14     size_t min_pos, max_pos, min_occ, max_occ;
  15 
  16     min = max = v[0];
  17     min_pos = max_pos = min_occ = max_occ = 0;
  18     for(size_t i = 0; i < v.size(); ++i) {
  19         if(v[i] < min) {
  20             min = v[i];
  21             min_pos = i;
  22             min_occ = 0;
  23         }
  24         if(v[i] > max) {
  25             max = v[i];
  26             max_pos = i;
  27             max_occ = 0;
  28         }
  29 
  30         min_occ += (min == v[i]) ? 1 : 0;
  31         max_occ += (max == v[i]) ? 1 : 0;
  32     }
  33 
  34     std::cout << "* min `" << min << "` en posición `" << min_pos
  35               << "` (" << min_occ << " ocurrencia)\n"
  36               << "* max `" << max << "` en posición `" << max_pos
  37               << "` (" << max_occ << " ocurrencia)\n";
  38 }
  39 
  40 int main (void) {
  41     int n;
  42     unsigned int len;
  43     std::vector<int> lista;
  44 
  45     std::cout << "Largo de la lista> ";
  46     std::cin >> len;
  47     if (std::cin.fail()) {
  48         std::cerr << "Solo se permite ingresar números\n";
  49         return -1;
  50     }
  51 
  52     while(lista.size() < len) {
  53         std::cout << lista.size() << "> ";
  54         std::cin >> n;
  55         std::cout << "\033[1A\033[2K";  // Borra el caracter ingresado 
  56 
  57         if (std::cin.fail()) {
  58             std::cout << "Solo se permite ingresar números\n";
  59             return -1;
  60         }
  61 
  62         lista.push_back(n);
  63         if(lista.size() > 1)
  64             std::cout << "\033[1A\033[2K";  // Borra el caracter ingresado 
  65 
  66         vector_print(lista);
  67     }
  68 
  69     vector_log(lista);
  70 
  71     return 0;
  72 }