ayuda para invertir un numero

Iniciado por Beginner Web, 14 Octubre 2018, 22:40 PM

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

Beginner Web

Hola tengo que invertir un numero utilizando colas el problema es que cuando ingreso numeros con mas de 2 cigras me devuelve datos erroneos , si ingreso un 23 devuelve 32, si ingreso 321 me devuelve 1203 y asi, no se si mi algoritmo esta mal planteado o que, el "algoritmo" esta en el programa principal, desde ya gracias
Ya lo solucione  ;-)

Código (cpp) [Seleccionar]
#include <iostream>
#include <stdlib.h>
#include <math.h>

using namespace std;

const int MAX=20;
typedef int contenedor[MAX];
typedef struct tcola{
contenedor datos;
int final, frente;
};

void init_queue(tcola &q);
void push_queue(tcola &q, int nuevo);
bool full_queue(tcola q);
bool empty_queue(tcola q);
int pop_queue(tcola &q);
int top_queue(tcola q);
int bottom_queue(tcola q);
int next(int indice);

int main()
{
int numero, inverso=0, i=-1;
tcola q;
init_queue(q);
cout<<"Ingrese numero: ";
cin>>numero;
while(numero>0){
push_queue(q,numero%10);
numero/=10;
i++;
}
while(empty_queue(q)==false){
inverso+=pop_queue(q)*pow(10.0.i);
i--;
}
cout<<"Inverso: "<<inverso<<endl;
system("pause");
}

void init_queue(tcola &q)
{
q.final=MAX-1;
q.frente=MAX-1;
}

void push_queue(tcola &q, int nuevo)
{
if(full_queue(q)==true)
cout<<"COLA LLENA"<<endl;
else{
q.final=next(q.final);
q.datos[q.final]=nuevo;
}
}

bool full_queue(tcola q)
{
return next(q.final)==q.frente;
}

bool empty_queue(tcola q)
{
return q.frente==q.final;
}

int pop_queue(tcola &q)
{
int aux;
if(empty_queue(q)==true)
aux=-1;
else{
q.frente=next(q.frente);
aux=q.datos[q.frente];
}
return aux;
}

int top_queue(tcola q)
{
int aux;
if(empty_queue(q)==true)
aux=-1;
else{
aux=q.datos[next(q.frente)];
}
return aux;
}

int bottom_queue(tcola q)
{
int aux;
if(empty_queue(q)==true)
aux=-1;
else{
aux=q.datos[q.final];
}
return aux;
}

int next(int indice)
{
if(indice==MAX-1)
indice=0;
else
indice++;
return indice;
}


7w7