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

Ejercicio Menor Número Parcial 2

parent 898941f2
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 del Menor Número cuya suma de sus dígitos sea igual a la pedida" << endl;
// Primero leemos el archivo input y verificamos su validez
cout << "Por favor ingrese la dirección del archivo con el input: ";
string nombre, linea;
cin >> nombre; // Utilizar sample.in en este caso
ifstream input;
input.open(nombre);
if (!input)
{
cout << "Archivo inválido." << endl;
exit(0);
}
// Generamos un vector con los valores siempre y cuando sean distintos de 0
vector <int> valSuma;
while(getline(input, linea))
{
if (stoi(linea) == 0) break;
valSuma.push_back(stoi(linea));
}
// Imprimimos el vector para verificar el input
cout << "Se ingresaron los valores: " << endl;
cout << "[ ";
for (int i:valSuma)
{
cout << i << " ";
}
cout << "]" << endl;
// Ahora, para cada valor de suma, se empieza a buscar, empezando por él mismo (pues no puede haber número menor cuya suma de dígitos
// corresponda al número)
string respuestas[valSuma.size()];
for (int i=0; i<valSuma.size(); i++)
{
// Primero comprobamos si el valor se encuentra entre 1 y 1000
if (valSuma[i]<1 || valSuma[i]>1000) {cout << "El valor " << valSuma[i] << " no está en el rango permitido"; continue;}
// Iniciamos el ciclo
for (int num = valSuma[i]; num<=pow(10, 5); num++)
{
// Realizamos la sumatoria de sus dígitos
int suma=0, temp=num;
for (int d=0; d<ceil(log10(num)); d++) // Realizamos un for para recorrer cada dígito del número
{
suma += temp%10;
temp /= 10;
}
// Comprobamos la suma
if (suma == valSuma[i]) {respuestas[i] = to_string(num); break;}
// Si es la ultima iteración y la suma no es igual, imprmimimos que no se halló respuesta en el intervalo
if (num == pow(10,5) && suma != valSuma[i])
{
respuestas[i] = "No se halló número que entregara la suma en el intervalo [" +to_string(valSuma[i])+", "+to_string(num)+"]";
}
}
}
// Finalmente imprimimos las respuestas
cout << "El menor número cuya suma de dígitos es el valor ingresado es:" << endl << "Suma : Número" << endl;
for (int i=0; i<valSuma.size(); i++)
{
cout << valSuma[i] << " : " << respuestas[i] << endl;
}
}
// Gracias por ver :D
\ No newline at end of file
File added
File added
8
10
0
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