Dev - C++ - algoritmo que, dado un valor entero positivo nos diga si los dígitos vecinos difieren

 
Vista:

algoritmo que, dado un valor entero positivo nos diga si los dígitos vecinos difieren

Publicado por dima (4 intervenciones) el 31/10/2018 00:49:12
algoritmo en C ++ que, dado un valor entero positivo n (> = 0), nos diga , si los dígitos vecinos difieren como máximo en dos unidades.

ENTRA UN NÚMERO ENTERO POSITIVO:
2387
NO ES UN NÚMERO SUAVE

ENTRA UN NÚMERO ENTERO POSITIVO:
86642
ES UN NÚMERO SUAVE
ENTRA UN NÚMERO ENTERO POSITIVO:
2
ES UN NÚMERO SUAVE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 338
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

algoritmo que, dado un valor entero positivo nos diga si los dígitos vecinos difieren

Publicado por Martín (158 intervenciones) el 01/11/2018 03:08:24
Aquí la función es_suave() es recursiva, se llama a sí misma hasta que ya no queden dos dígitos para comparar.
Si en algún momento dos dígitos difieren en más de 2 devuelve false.
Si cuando se agota el proceso no hubo ningún par de dígitos que difirieran en más de 2, devuelve true (es un número "suave").

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
#include <iostream>
#include <cmath>
 
bool es_suave(unsigned n) {
 
    if (n < 10)
        return true;
 
    int a = n % 10;
    int b = (n / 10) % 10;
 
    if (abs(a - b) > 2)
        return false;
 
    return es_suave(n / 10);
}
 
int main()
{
    unsigned n;
    std::cout << "ENTRA UN NUMERO ENTERO POSITIVO:\n";
    std::cin >> n;
 
    if (!es_suave(n))
        std::cout << "NO ";
    std::cout << "ES UN NUMERO SUAVE.\n";
 
    return 0;
}

# Martín - Profe de C++ Contactar por Tarea explicada y tutorías
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar