¿Lógica detrás del programa para verificar si el número es palíndromo o no?

Programa de números de Palindrome en C ++

El número de palíndromo significa que siempre que invierta cualquier resultado numérico será igual al número original. Ejemplo de número de palíndromo es; 121,

Número de palíndromo Ejemplo en C ++

#include
#include

vacío principal()
{
int num, reverse = 0, num = 0;
cout << "Ingrese el número:";
cin >> num;
temp = num;
para (int i = 1; num! = 0; i ++)
{
num = palíndromo% 10;
num = num / 10;
reverse = num + (reverse * 10);
}
if (reverse == temp)
{
cout << "Número de Palindrome";
}
más
{
cout << "No es un número de palíndromo";
}
getch ();
}

Ayudará si tomamos un ejemplo:

Digamos que queremos probar 1221.
temp = i = 1221 antes del comienzo del ciclo while.
Iteración 1:
– temp% 10 le da el dígito más a la derecha (que es 1 aquí)
– temp / 10 elimina el dígito más a la derecha y trunca el número a 122.
– ahora use otra variable (revrs) para construir el número hacia atrás (el dígito más a la derecha va a la izquierda y así sucesivamente)
– revrs después de la primera iteración es 1.

Iteración 2:
– la temperatura es 122
– temp% 10 le da el dígito más a la derecha (que es 2 aquí)
– temp / 10 elimina el dígito más a la derecha y trunca el número a 12.
– ahora use otra variable (revrs) para construir el número hacia atrás (el dígito más a la derecha va a la izquierda y así sucesivamente)
– revrs después de esta iteración es (1 * 10 + 2) = 12.

Iteración 3:
– la temperatura es 12
– temp% 10 le da el dígito más a la derecha (que es 2 aquí)
– temp / 10 elimina el dígito más a la derecha y trunca el número a 1.
– ahora use otra variable (revrs) para construir el número hacia atrás (el dígito más a la derecha va a la izquierda y así sucesivamente)
– revrs después de esta iteración es (12 * 10 + 2) = 122.

Iteración 4:
– temp es 1.
– temp% 10 = 1.
– temp / 10 = 0 (lo que significa que el ciclo while finalizará después de esto)
– revrs = 122 * 10 + 1 = 1221.

Ahora, revrs es la representación inversa del número original. Para que ahora pueda comparar i con revrs directamente y obtener el resultado deseado.

Conviértalo a una cadena, esa es la forma más sensata de lograr esto y será más legible.

Alternativamente, y posiblemente menos legible, podría usar algo como esto:

  int palindrome (int num) {
     int hacia atrás = 0;
     int hacia adelante = num;
    
     while (adelante! = 0)
     {
         hacia atrás = hacia atrás * 10 + hacia adelante% 10;
         adelante / = 10;
     }
    
     volver (num == al revés)?  1: 0;
 }

Hacia atrás acumula el número entero por cada potencia de diez lugares, hacia adelante es un número entero decidido por 10 para eliminar el lugar menos significativo en cada ronda del ciclo while.

  #include 
 int main () {
   int orig = 9;
   int num = orig;

   int reverse = 0;
   int dígito;  

   while (num> 0) {
     dígito = num% 10;
     reverse = reverse * 10 + digito;
     num = num / 10;
   } 

   if (reverse == orig) {
     printf ("sí, es palíndromo");
   }
   más{
     printf ("no es un palíndromo");
   }

   devuelve 0;
 }

Para una mejor comprensión, visite

Lógica para encontrar si el número es Palindrome o no es

  • Necesita revertir el número y verificar si el reverso del número y el número son iguales o no.

Para invertir el número, debemos usar los pasos a continuación.

  1. Suponga que la entrada se almacena en la variable x, el reverso de la entrada se almacena en la variable y. Inicialice y con 0. Y una variable temporal inicialice con x
  2. y = y * 10 + (temp% 10); temp = temp / 10; – repita esto hasta (temp> 0). Puede hacerlo en el bucle while

temp% 10 da el resto y, como estamos haciendo la división por 10, el resto será el último dígito del número.

temp / 10 da el cociente ya que la división es por 10, por lo tanto, el cociente será el resto del número sin el último dígito.

3. al final compare x e y. Si ambos son iguales, entonces es Palindrome. De lo contrario no lo es.

Por ejemplo, la entrada es 121

x = 121, y = 0, temp = 121

while (temp> 0) {

y = y * 10 + (temp% 10);

temp = temp / 10;

}

1ra iteración:

y = 0 * 10 + (121% 10) -> y = 1

temp = (121/10) -> temp = 12

Segunda iteración

y = 1 * 10 + (12% 10) -> y = 10 + 2 -> y = 12

temp = (12/10) -> temp = 1

3ra iteración

y = 12 * 10 + (1% 10) -> y = 120 + 1 -> y = 121

temp = (1/10) -> temp = 0

Como (temp> 0) fallará ahora, la iteración se detiene.

Compara x e y

Como x = 121 e y = 121

Es un número de Palindrome.

De manera similar, si tomamos x = 122 después de invertir el número y = 221. Como x e y no son iguales. No es un palíndromo.

¿Hay alguna otra manera de verificar que el número sea palíndromo o no?

More Interesting

¿Qué es una subcadena?

¿Cuáles son algunos sitios para entrevistas técnicas?

¿Cuáles son algunas preguntas básicas sobre el lenguaje de programación C formuladas en la mayoría de las entrevistas?

Cómo quejarme de mi compañero de cuarto que está engañando en sus entrevistas telefónicas de Google

Mañana tengo una entrevista para un puesto de ingeniero integrado (ver descripción). ¿Qué preguntas puedo esperar en general y en el aspecto técnico?

¿Qué preparación especial hay que hacer para las entrevistas de empresas como Google, Amazon y Facebook?

¿Por qué a algunos programadores les resulta más difícil escribir código en una pizarra que en una computadora?

¿Puedo desafiar al entrevistador durante la entrevista técnica?

¿Cuáles son los temas candentes que debe preparar un ingeniero eléctrico para una entrevista técnica?

¿Encontrar un patrón en una cadena con uno o cero falta de coincidencia? Por ejemplo: S = abbbaaabbbabab P = abab Las coincidencias son abbb (índice 0), aaab (índice 4), abbb (índice 6), abab (índice 10). Supongo que se puede hacer mediante alguna modificación del algoritmo KMP.

¿Cuándo debo esperar una decisión de entrevista técnica en el sitio? Pensé que estaban tan impresionados por mí que me ofrecerán el mismo día.

Constantemente me quedo atascado en las preguntas de la entrevista de programación técnica incapaz de progresar. ¿Hay alguna forma de practicar y mejorar?

¿Cómo podemos fusionar dos montones binarios de manera eficiente? El montón se representa como una matriz.

¿Cuáles son algunas buenas tareas de desarrollo cortas (1–3 horas) para un proceso de solicitud / entrevista de desarrollador JavaScript de nivel medio de entrada?

Cómo prepararse para la entrevista de estructura de datos y crack