Palindromo numerico c++

Iniciado por Pelusatron, 29 Marzo 2017, 04:19 AM

0 Miembros y 2 Visitantes están viendo este tema.

Pelusatron

Hola amigos del foro!!
Esperaba a que resolvieran mi duda con este programa ):
Y es que quiero saber como solucionar el problema en la parte de la evaluación
Mi problema es este:
Por ejemplo si ingreso 5(osea m) y luego: 1 2 3 2 1 (elementos del palindromo) me imprime que no lo es cuando realmente si lo es



Código (cpp) [Seleccionar]
[
#include<iostream>
#include<stack>
using namespace std;

int main()
{
stack <char> pila;
int m; cin>>m;
string p,q="";

for(int i=0; i<m; i++)
{
cin>>p[m];
pila.push(p[m]);
}
while(!pila.empty())
{
q=q+pila.top();
pila.pop();
}

if(q[0]=='0' || q[m-1]=='0')
{
cout<<"NO";
}
else if(p != q)
{
cout<<"NO";
}
else
{
cout<<"SI";
}

return 0;
}]




ivancea96

Dos detalles nada más:

Código (cpp) [Seleccionar]
string p(m, '0'),q="";

for(int i=0; i>p[i];
pila.push(p[i]);
}


En primer lugar, si vas a acceder a los caracteres de una string por su índice, tienen que existir. Así que utiliza el constructor de stirng para que ya tenga los caracteres ("m, '0'": el primer parámetro es el número de caracteres, y el segundo con qué los quieres rellenar).

Luego, pusiste p[ m ] en vez de p[ i ]

Pelusatron

ya realicé ambas sugerencias y el programa sigue fallando, el problema es que si inserto: 1 2 3 4 5
Mi programa lo reconoce como un palindromo
Cómo puedo arreglarlo?? ):


Código (cpp) [Seleccionar]
[#include<iostream>
#include<stack>
using namespace std;

int main()
{
stack <char> pila;
int m; cin>>m;
bool band=false;
string p(m, '0'),p2;

for(int i=0; i<m; i++)
{
cin>>p[i];
pila.push(p[i]);
}

for(int i=0;i<m;i++)
{
if(pila.top() == p[i])
{
band=true;
}
pila.pop();
}

if(p[0]=='0' || p[m-1]=='0')
{
cout<<"NO";
}
else if(band==true)
{
cout<<"SI";
}
else
{
cout<<"NO";
}
return 0;
}]

ivancea96


Pelusatron

He logrado resolver el problema, envió el código por si a alguien le hes útil, no lo probé pero creo que también funciona para las palabras.

Gracias a todos los que vieron mi post y a los que respondieron!!!


Código (cpp) [Seleccionar]
[#include<iostream>
#include<stack>
using namespace std;

int main()
{
int o=0;
stack <char> pila;
char arr[100];
int m; cin>>m;

for(int i=0; i<m; i++)
{
cin>>arr[i];
pila.push(arr[i]);
}
int a=0,l=0;
while(!pila.empty())
{
if(pila.top() == arr[a])
{
l++;
}

a++;
pila.pop();
}
if(arr[0]=='0' || arr[m-1]=='0')
{
cout<<"Los elementos insertados no corresponden a un palindromo";
}
else if(l==m)
{
cout<<"Los elementos insertados si corresponden a un palindromo";
}
else
{
cout<<"Los elementos insertados no corresponden a un palindromo";
}

return 0;
}]