CB100

Notas, resueltos y tps de la materia Algoritmos y Estructuras de Datos
Index Commits Files Refs README
commit d90ae819530da4ca0278ba6f54e77999df7a6464
parent 1ffc9dd0d87329f78035a30496a24c336bfc223c
Author: Martin Kloeckner <mjkloeckner@gmail.com>
Date:   Fri, 29 Mar 2024 01:40:07 -0300

Add solutions of problems 25, 26 and 27

Diffstat:
Asolutions/ej25.cpp | 26++++++++++++++++++++++++++
Asolutions/ej26.cpp | 35+++++++++++++++++++++++++++++++++++
Asolutions/ej27.cpp | 32++++++++++++++++++++++++++++++++
3 files changed, 93 insertions(+), 0 deletions(-)
diff --git a/solutions/ej25.cpp b/solutions/ej25.cpp
@@ -0,0 +1,26 @@
+#include <iostream>
+#include <vector>
+
+bool is_prime(unsigned int n) {
+    std::vector<bool> v(n + 1, true);
+
+    if((n == 0) || (n == 1))
+        return false;
+
+    for (size_t i = 2; i*i < n; ++i)
+        if(v[i])
+            for (size_t j = i; j <= (n/i); ++j)
+                v[i*j] = false;
+
+    return v[n];
+}
+
+int main (void) {
+    unsigned int n;
+
+    std::cout << "Ingrese un valor entero> ";
+    std::cin >> n;
+
+    std::cout << (is_prime(n) ? "Es primo\n" : "No es primo\n");
+    return 0;
+}
diff --git a/solutions/ej26.cpp b/solutions/ej26.cpp
@@ -0,0 +1,35 @@
+#include <iostream>
+#include <iomanip>
+#include <cmath>
+
+typedef struct {
+    float x1, x2;
+} Vec2f;
+
+bool cuadratic_has_real_roots(float a, float b, float c) {
+    return ((b*b)-(4*a*c)) >= 0;
+}
+
+Vec2f cuadratic_roots(float a, float b, float c) {
+    if(cuadratic_has_real_roots(a, b, c) == false)
+        return (Vec2f){0,0};
+
+    Vec2f res;
+    res.x1 = ((-b)+std::sqrt((b*b)-(4*a*c)))/(2*a);
+    res.x2 = ((-b)-std::sqrt((b*b)-(4*a*c)))/(2*a);
+    return res;
+}
+
+int main (void) {
+    float a, b, c;
+    Vec2f p;
+
+    std::cin >> a;
+    std::cin >> b;
+    std::cin >> c;
+
+    p = cuadratic_roots(a,b,c);
+    std::cout << "x1=" << std::left << std::setw(4) << p.x1 
+              << "x2=" << std::setw(4) << p.x2 << std::endl;
+    return 0;
+}
diff --git a/solutions/ej27.cpp b/solutions/ej27.cpp
@@ -0,0 +1,32 @@
+// https://en.wikipedia.org/wiki/Least_common_multiple
+// https://en.wikipedia.org/wiki/Greatest_common_divisor
+// https://en.wikipedia.org/wiki/Euclidean_algorithm
+
+#include <iostream>
+
+int find_gcd(int a, int b) {
+    if(!b)
+        return a;
+
+    return find_gcd(b, a % b);
+}
+
+int find_lcm(int a, int b) {
+    return (a * b) / find_gcd(a, b);
+}
+
+int main (void) {
+    int a, b, lcm, gcd;
+
+    std::cin >> a;
+    std::cin >> b;
+
+    lcm = find_lcm(a,b);
+    gcd = find_gcd(a,b);
+
+    std::cout << "a=" << a
+              << "\tb=" << b << std::endl
+              << "lcm=" << lcm << std::endl
+              << "gcd=" << gcd << std::endl;
+    return 0;
+}