[Ayuda] Programa capicua

Iniciado por Sothu, 1 Noviembre 2015, 13:24 PM

0 Miembros y 1 Visitante están viendo este tema.

Sothu

Buenas,
tengo que hacer un programa en c++ que me diga los numeros capicua que se encuentran entre dos valores(n, m) y no se por donde empezar. He pensado en crear una accion que me diga si el numero es capicua y luego ir comprovando con un ciclo si lo son los numeros entre n, m.
Alguna ayuda?

ivancea96

Cita de: Sothu en  1 Noviembre 2015, 13:24 PM
He pensado en crear una accion que me diga si el numero es capicua y luego ir comprovando con un ciclo si lo son los numeros entre n, m.

Es correcto, ahora, empieza a desarrollarlo. Deja la función que comprueba si es capicua para el final, y no tendrás problema.

Como dato, te digo: el operador módulo (%), retorna el resto de una división. Así pues, 123456%10, retorna 6 (la primera cifra).

Puedes convertir el número a un arreglo de caracteres con este método, o puedes hacer como veas. Empieza, luego si tienes dudas, sigue preguntando por aquí.

Sothu

De momento he intentado crear una accion que me devuelva el numero girado pero no me funciona, soy muy nuevo en la POO. Alguien podria decirme que falla aqui?

#include <iostream>

using namespace std;

int alReves (int numero)
{
    while (numero != 0)
    {
        numero % 10;
        numero = numero / 10;
    }
    return alReves();
}

int main()
{
    int numero;
    cout << "ENTRAR NUMERO:";
    cin >> numero;
    cout << alReves(numero);
}

ivancea96

Descríbe paso a paso que es lo que pretendes hacer en ese algoritmo.

Te voy a describir lo que hace la función:

Mientras que el número sea diferente de 0, lo divides entre 10.

Luego, tienes una línea errónea. Tratas de retornar "alReves()". Estás llamando a la función, sin pasarle ningún argumento.

La línea numero%10; no hace nada. Hace la operación y ya, pero no guarda el resultado en ningún lugar.

Te diría que te pases por aquí: minidosis.org

Sothu

Lo de la operacion del numero ya veo que es un error, lo que no entiendo es lo que dices del return. ¿Despues de una accion no va siempre un return de la misma?

ivancea96

En el return retornas un valor. Poner la función implica llamar a la función.

Sothu

Entonces debo hacer return numero; ?

ivancea96

Efectivamente. Sin embargo, el algoritmo es incorrecto. Cuando salga del bucle, numero será igual a 0, tenlo en cuenta.

Sothu


ivancea96

Plantea un algoritmo. Si logras poner un algoritmo en papel, luego pasarlo a programación es más fácil.