#WSQ08
En este programa se necesitaron distintas librerías para poder realizarlo dado que aunque se podía hacer un loop y así revisar cada número, se necesitaba una función que pudiera leer el número al revés. Para hacer esto utilizamos la función reverse (), pero a la ves esto surge complicaciones dado que para esta función se necesitan valores de tipo string y no valores tipo entero.
Código:
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
bool is_palindrome(BigInteger n)
{
string a1= bigIntegerToString(n);
string a2=a1;
reverse(a2.begin(), a2.end());
return (a2==a1);
}
BigInteger apply196(BigInteger n){
string a1= bigIntegerToString(n);
string a2=a1;
reverse(a1.begin(), a1.end());
return n+ stringToBigInteger(a1);
return n;
}
int main() {
int nolychrel=0, palin=0, lychrel=0;
BigInteger num;
int inferior, mayor;
cout <<«Calculadora de palíndromos»<<endl<<‘\n’;
cout<<«Ingresa tu número inferior»<<endl;
cin>>inferior;
cout<<‘\n'<<«Ingresa tu número mayor»<< endl;
cin>>mayor;
for(int i=inferior; i<=mayor; i++){
num=i;
if(is_palindrome (num)==true){
palin=palin+1;
}
else {
int contador=0;
bool lych= true;
while (contador<=30){
num= (apply196(num));
if((is_palindrome(num))==true){
nolychrel=nolychrel+1;
lych=false;
break;
}
else{
contador=contador+1;
}
}
if (lych){
cout<<‘\n'<<«Acabo de encontrar un número lychrel y es: «<< i<<endl;
lychrel=lychrel+1;
}
}
}
cout<<‘\n'<<«Entre su rango de números hay:»<<endl<<‘\n’;;
cout<<palin<<» palíndromos»<<endl<<‘\n’;;
cout<<lychrel<<» números lychrel»<<endl<<‘\n’;;
cout<<nolychrel<<» números no lychrel»<<endl<<‘\n’;;
return 0;
}
Referencias:
https://kenscourses.com/tc1017fall2017/tag/wsq08/