0votos

El número feliz en C++

por pablo algaba hace 3 meses

Por aquí os dejo el algoritmo que encuentra todos los numeros felices en un intervalo de numeros positivos introducidos por el usuario, en caso de que el intervalo introducido sea de numeros negativos, vuelve a pedir un intervalo, y en caso de introducir un intervalo desordenado, lo ordeno. Espero que os sirva de ayuda

Programar el algoritmo necesario para averiguar si un número es feliz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <iostream> 
#include <cmath> 
using namespace std; 
 
void Intervalo (int& min, int& max) 
    cout << "Introduzca un rango de valores positivo: "; 
    cin >> min >> max; 
 
void Intercambio (int&min, int& max) 
    int aux; 
    aux = min; 
    min = max; 
    max = aux;     
 
bool Felicidad (int& i) 
    int cont = 0; 
    int cont_max = 30; 
    int num = i, suma, digito; 
    while ((num != 1) && (cont <= cont_max)) 
        suma = 0; 
        while (num > 0) 
            digito = num%10; 
            suma = suma + pow(digito,2); 
            num = num/10; 
        num = suma; 
        cont++; 
    return suma == 1; 
 
int main() 
    int min, max; 
    cout << "Introduzca un rango de valores positivo: "; 
    cin >> min >> max; 
    while ((min < 0) || (max < 0)) 
        cout << "Los valores deben ser positivos" << endl; 
        Intervalo(min, max); 
    if (min > max) 
        Intercambio(min, max); 
    cout << "El intervalo es: " << "[" << min << "," << max << "]" << endl; 
    cout << "Los numeros felices en el intervalo " << "[" << min << "," << max << "] son: "; 
    for (int i = min; i <= max; ++i) 
        if (Felicidad(i)) 
            cout << i << " "; 
    return 0; 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.