sábado, 1 de octubre de 2011

PALINDROMO EJERCICIO_1 (C++)

Bueno compañeros. Acá les dejo un algoritmo con su respectiva documentación que nos dice si un número es palindromo o no.


#include <iostream>
#include <conio.h>
#include <Math.h>
using namespace::std;
int num,cnum1,cnum2,i=0,j=1,k,cifraa,cifrab;
bool sw=true;
//ALGORITMO QUE DICE SI UN NUMERO ES PALINDROMO O NO
void main(){
//Se lee el numero
cout<<"Digite un numero entero: ";
cin>>num;
//Se saca el valor absoluto del numero ya que el signo es despreciable
cnum1=abs(num);
//Se saca el numero de cifras del numero
        while(cnum1>0){
                i++;
                cnum1=cnum1/10;
        }
//Volvemos a asignar la copia al numero original ya que se ha modificado debido al calculo de las cifras
cnum1=num;
//Comparamos hasta la mitad del numero y mientras que las cifras a comparar sean iguales
        while(j<=i/2 && sw==true){
                cnum2=num;
//Se saca la cifra mas a la derecha
                cifraa=cnum1%10;
//Un contador k para sacar la cifra mas a la izquierda
                 k=0;
//La formula i-j nos dice hasta donde se debe seguir reduciendo el numero para sacar la cifra mas a la izquierda
                         while(k<=i-j){
                                 cifrab=cnum2%10;
                                 cnum2=cnum2/10;
                                 k++;
                         }
//Ya teniendo las cifras, se comparan. Si son diferentes se cambia el switch a falso
                         if(cifraa!=cifrab){
                                 sw=false;
                         }
                cnum1=cnum1/10;
                j++;
        }
/*Si el switch es verdadero es porque el numero es palindromo o capicúa
Si es falso es porque no es palindromo o capicúa*/
        if (sw==true){
                cout<<"El numero "<<num<<" es palindromo.";
        }
        else{
                cout<<"El numero "<<num<<" no es palindromo.";
        }
    _getch();
}
Share:

Ipod


BTemplates.com