Skip to content
Snippets Groups Projects
Commit 97ee5146 authored by Nicolas Mantilla Molina's avatar Nicolas Mantilla Molina
Browse files

Ejercicio Cuadrados Perfectos Parcial 2

parent f4a1c42a
No related branches found
No related tags found
No related merge requests found
#include <iostream>
#include <cmath>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
cout << "Bienvenido al calculador de factores para crear Cuadrados Perfectos" << endl;
// Primero leemos el archivo input y verificamos su validez
cout << "Por favor ingrese la dirección del archivo con el input: ";
string nombre = "sample.in", linea;
// cin >> nombre; // Utilizar sample.in en este caso
ifstream input;
input.open(nombre);
if (!input)
{
cout << "Archivo inválido." << endl;
exit(0);
}
// Leemos el primer valor como el número de casos a evaluar
int n;
getline(input,linea);
n = stoi(linea);
// Creamos un array para alojar los números a evaluar y seguimos leyendo el archivo
int numeros[n], cont=0;
while (getline(input, linea))
{
numeros[cont] = stoi(linea);
cont++;
}
// Imprimimos el array para verificar el input
cout << "Se ingresaron los números: " << endl;
cout << "[ ";
for (int v:numeros)
{
cout << v << ' ';
}
cout << "]" << endl;
// Declaramos el array con las respuestas e iniciamos a comprobar factores desde 1 hasta el orden del número para cada número
int respuestas[n];
for (int i = 0; i<n; i++)
{
for (int fac = 1; fac < pow(10, ceil(log10(numeros[i]))); fac++) // La función techo del log en base 10 permite saber la cantidad de dígitos
{
// Hallamos el producto y verificamos si su raiz es perfecta o no
int producto = numeros[i] * fac;
if (sqrt(producto) == round(sqrt(producto)))
{
respuestas[i] = fac; // Si es perfecta, asignamos el valor a la respuesta
break;
}
if (fac == pow(10, ceil(log10(numeros[i])))-1)
{
cout << "No se encontró factor para el valor " << numeros[i] << " dentro del scope: [1, " << fac << "]";
}
}
}
// Finalmente imprimimos las respuestas
cout << "Los factores más pequeños que convierten los números en cuadrados perfectos son: " << endl << "Número : Factor" << endl;
for (int v=0; v < n; v++)
{
cout << numeros[v] << " : " << respuestas[v] << endl;
}
}
// Gracias por ver :D
File added
File added
4
4
8
12
3500642
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment