CB100

Notas, resueltos y tps de la materia Algoritmos y Estructuras de Datos
Index Commits Files Refs README
commit 49d5cb58fba3d5ccc6a2da57e51a4807d3849e82
parent efec49fabc76ff5ae8c1dc5ab9f766b369e30d23
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Mon, 25 Mar 2024 00:38:46 -0300

Add problem 17 solution

Diffstat:
Asolutions/ej17.cpp | 72++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+), 0 deletions(-)
diff --git a/solutions/ej17.cpp b/solutions/ej17.cpp
@@ -0,0 +1,72 @@
+#include <iostream>
+#include <vector>
+
+void vector_print(std::vector<int> v) {
+    std::cout << "[";
+    for(size_t i = 0; i < v.size(); ++i) {
+        std::cout << v[i] << ((v.size() == i+1) ? "" : ", ");
+    }
+    std::cout << "]\n";
+}
+
+void vector_log(std::vector<int> v) {
+    int min, max;
+    size_t min_pos, max_pos, min_occ, max_occ;
+
+    min = max = v[0];
+    min_pos = max_pos = min_occ = max_occ = 0;
+    for(size_t i = 0; i < v.size(); ++i) {
+        if(v[i] < min) {
+            min = v[i];
+            min_pos = i;
+            min_occ = 0;
+        }
+        if(v[i] > max) {
+            max = v[i];
+            max_pos = i;
+            max_occ = 0;
+        }
+
+        min_occ += (min == v[i]) ? 1 : 0;
+        max_occ += (max == v[i]) ? 1 : 0;
+    }
+
+    std::cout << "* min `" << min << "` en posición `" << min_pos
+              << "` (" << min_occ << " ocurrencia)\n"
+              << "* max `" << max << "` en posición `" << max_pos
+              << "` (" << max_occ << " ocurrencia)\n";
+}
+
+int main (void) {
+    int n;
+    unsigned int len;
+    std::vector<int> lista;
+
+    std::cout << "Largo de la lista> ";
+    std::cin >> len;
+    if (std::cin.fail()) {
+        std::cerr << "Solo se permite ingresar números\n";
+        return -1;
+    }
+
+    while(lista.size() < len) {
+        std::cout << lista.size() << "> ";
+        std::cin >> n;
+        std::cout << "\033[1A\033[2K";  // Borra el caracter ingresado 
+
+        if (std::cin.fail()) {
+            std::cout << "Solo se permite ingresar números\n";
+            return -1;
+        }
+
+        lista.push_back(n);
+        if(lista.size() > 1)
+            std::cout << "\033[1A\033[2K";  // Borra el caracter ingresado 
+
+        vector_print(lista);
+    }
+
+    vector_log(lista);
+
+    return 0;
+}