Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Proyecto en C++

Estas en el tema de Proyecto en C++ en el foro de C/C++ en Foros del Web. HOLA A TODOS. QUERÍA VER SI ALGUIEN ME PODÍA AYUDAR CON UN PROBLEMA. TENGO QUE HACER UN PROGRAMA EN EL CUAL INGRESE UNA PALABRA POR ...
  #1 (permalink)  
Antiguo 16/06/2010, 01:21
 
Fecha de Ingreso: junio-2010
Mensajes: 2
Antigüedad: 13 años, 10 meses
Puntos: 0
De acuerdo Proyecto en C++

HOLA A TODOS. QUERÍA VER SI ALGUIEN ME PODÍA AYUDAR CON UN PROBLEMA. TENGO QUE HACER UN PROGRAMA EN EL CUAL INGRESE UNA PALABRA POR TECLADO Y ME DIGA SI ES PALÍNDROME. ESTO TIENE QUE SER CON STACK, COLA, PLANTILLAS, VECTORES ENTRE OTRAS
EL TEMA ES QUE YA LO HISE PERO TENGO EL PROBLEMA QUE CUANDO LO COMPILO HACE TODO BIEN PERO LUEGO DICE "PULSE TECLA PARA CONTINUAR" Y PULSO TECLAS Y AÚN ASI NO SE CIERRA. TENGO QUE CERRARLO CON LA "X" DE ARRIBA PERO ESO ME IMPLICA MENOS NOTA. QUERÍA SABER SI ME PUEDEN AYUDAR. LES MANDO LOS CODIGOS. VAN CON COMENTARIOS ÙES ASI ME LOS PIDE EL PROFESOR:

#include <cstdlib>
#include <iostream>
#include "impleColaDinamica.cpp"
#include <string.h>

using namespace std;
/*
template <class T>
void Imprime(Cola<T>& C){ //Este procedimiento muestra los elementos de la Cola
Cola<T> R;
T e;
while (! C.Vacia()){
e = C.Extraer();
cout << "valor " << e << endl;
R.Agregar(e);
}
while (! R.Vacia()){
e = R.Extraer();
C.Agregar(e);
}
}
//Usamos este procedimiento para verificar si efectivamente la cola contenía la palabra ingresada por teclado

*/

/*
template <class T>
void ImprimeStack(Stack<T>& S){Este procedimiento muestra los elementos del Stack
Stack<T> R;
char e;
while (! S.Empty()){
e = S.Pop();
cout << "valor " << e << endl;
R.Push(e);
}
while (! R.Empty()){
e = R.Pop();
S.Push(e);
}
}
//Usamos este procedimiento para verificar si el Stack efectivamente contenía los datos de la cola invertidos
*/


/*
template <class T>
void mostrar(char A[],T n) //Este procedimiento muestra los datos del vector en el cuál guardamos inicialmente la palabra ingresada
{
for(int i=0;i<n;i++)
{
printf("%c\n",A[i]);
}
}
Usamos este procedimiento para comprobar si la palabra ingresada quedaba guardada en el vector

*/

template <class T>
bool Compara(Stack<T> S, Cola<T> C)
{
T e,f;

while(!C.Vacia())
{
e=S.Pop();
f=C.Extraer();
if(e==f){}//no hace nada.
else{
return false;
}

}

}


int main(int argc, char *argv[])
{
system("COLOR 1E");
bool opc;
Cola<char> Q,Y;
Stack<char> R;
int s,i=0,j,k;
char A[100];
cout<<"Escriba una palabra"<<endl;
cin>>A;
s=strlen(A);/*Ocupamos strlen para sacar el largo de la palabra y asi poder
traspasar el contenido del vector A a la cola Q. */

//cout<<s<<endl; Queriamos ver si nos daba correctamente el numero de letras de la palabra

while(i<s)/*(Copia el elemento de la casilla A[i] en la Cola Q "el numero de letras veces")*/
{
char p;
p=A[i];
Q.Agregar(p);
i++;
}
//mostrar(A ,s); //queríamos comprobar si el vector contenía la palabra ingresada
//Imprime(Q); //queríamos comprobar si la cola Q contenía las letras de la palabra ingreada en el orden correcto

while(! Q.Vacia())
{
//Cola<char> Y;
char e;
e=Q.Extraer();
R.Push(e);
Y.Agregar(e);

}
//Imprime(Y); //Acá queríamos ver si los datos de la cola Q se habían copiado correctamente a la cola Y
cout<<endl;
//ImprimeStack(R);//Queríamos comprobar si el Stack contenía los datos de la cola invertidos

//Compara(R, Y,&x);

opc=Compara(R,Y);
if(opc==false)
cout<<"La palabra "<<A<<" no es palindrome"<<endl;
else
cout<<"La palabra "<<A<<" es palindrome"<<endl;
system("PAUSE");
return EXIT_SUCCESS;

}


POR SI LAS NECESITAN LES DOY LA CLASE Y LA IMPLEMENTACIÓN DEL PROYECTO:

CLASE:
template <class T>
class Cola
{
public:
class Nodo
{
public:
Nodo(const T& e, Nodo *p) : dato(e), link(p) {}
~Nodo() { }

T dato;
Nodo *link;
};

Cola();
~Cola();

void Agregar(T e);
T Extraer();

bool Vacia();

private:
Nodo *mPrimero;
Nodo *mUltimo;
};

template <class T>
class Stack
{
public:
class Nodo{
public:
Nodo(const T& e,Nodo *p):dato(e),link(p) {}
~Nodo() { }
T dato;
Nodo *link;
};
Stack();
~Stack();
void Push(T e);
T Pop();

bool Empty();
private:
Nodo *mL;
};


iMPLEMENTACION:

#include <cstdlib>
#include <iostream>

#include "claseColaDinamica.h"


using namespace std;

template <class T>
Cola<T>::Cola(): mPrimero(NULL), mUltimo(NULL)
{
}

template <class T>
Cola<T>::~Cola()
{
while(!Vacia())
Extraer();
}

template <class T>
void Cola<T>::Agregar(T e)
{
Nodo *p = new Nodo(e, NULL);

if(Vacia()) {
mPrimero = p;
mUltimo = mPrimero;

return;
}
mUltimo->link = p;
mUltimo = p;
}

template <class T>
T Cola<T>::Extraer()
{
if(Vacia()) {
return T();
}

Nodo *p = mPrimero;
T e = mPrimero->dato;

mPrimero = mPrimero->link;
delete p;

return e;
}

template <class T>
bool Cola<T>::Vacia()
{
return !(mPrimero);
}


template <class T>
Stack<T>::Stack() : mL(NULL){
}

template <class T>
Stack<T>::~Stack(){
T e;
while(!Empty())
e = Pop();
}

template <class T>
void Stack<T>::Push(T e){
Nodo *p = new Nodo(e, NULL);
if(mL == NULL){
mL = p;
}
else{
p->link = mL;
mL = p;
}
}

template <class T>
T Stack<T>::Pop(){
Nodo *p = mL;
T e;
if(p == NULL){
// nada
}
else{
e = mL->dato;
mL = mL->link;
delete p;
return e;
}
}

template <class T>
bool Stack<T>::Empty(){
return (mL == NULL);
}

ES LARGO PERO ESPERO QUE HAYA ALGUIEN CAPAZ DE AYUDARME. GRACIAS
  #2 (permalink)  
Antiguo 16/06/2010, 11:14
 
Fecha de Ingreso: junio-2010
Mensajes: 6
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Proyecto en C++

Fijate cuando cerras el main, en vez de poner "return EXIT_SUCCESS"
Cerralo con un "Return 0".

Yo siempre cerre mis propgramas con un return cualquier numero.. En definitiva es solo para returnear algo porq es int, no le importa que returnees.
  #3 (permalink)  
Antiguo 16/06/2010, 22:38
 
Fecha de Ingreso: junio-2010
Mensajes: 2
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Proyecto en C++

Cita:
Iniciado por eliopez Ver Mensaje
fijate cuando cerras el main, en vez de poner "return exit_success"
cerralo con un "return 0".

Yo siempre cerre mis propgramas con un return cualquier numero.. En definitiva es solo para returnear algo porq es int, no le importa que returnees.
gracias pero no era eso el problema
  #4 (permalink)  
Antiguo 17/06/2010, 08:48
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Proyecto en C++

que compilador utilizas?
  #5 (permalink)  
Antiguo 18/06/2010, 11:27
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: Proyecto en C++

Revisa que no se cuelgue el código en los destructores de Cola y Stack.

Etiquetas: proyectos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:42.