elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con punteros.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con punteros.  (Leído 2,519 veces)
vazquinhos

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Problema con punteros.
« en: 19 Septiembre 2012, 11:01 am »

Tengo un poco de lio con los punteros.
Me he declarado una clase

lifo.h
Código:
#include<iostream>

struct Tnodo
{
  Tnodo *ant;
  int datos; 
};
typedef Tnodo *Tpila;

class lifo
{
private:
Tnodo *stack;
public:
//Constructores
lifo(void);
//Mira si la pila esta vacia
bool isEmpty(void);
//Mira el primer elemento de la pila sin quitarlo
int peek(void);
//Elimina el ultimo elemento
void pop(void);
//Inserta un nuevo elemento en la pila
void push(int new_element);
//Muestra por pantalla los elementos de nuestra pila
void print(void);
};

He hecho su implementacion, pero no me hace bien las cosas por tema de acceso a punteros.

lifo.cpp
Código:
#include"lifo.h"

//Constructor de la clase lifo
lifo::lifo(void)
{
stack->datos = 0;
stack->ant = NULL;
}

void lifo::push(int new_element)
{
Tnodo *nodo;
nodo->datos = new_element;
if(stack->ant == NULL)
{
nodo->ant = NULL;
}else
{
[s]nodo->ant = stack->ant;[/s]
}
stack->ant = &(*nodo);
}

void lifo::pop(void)
{
if(stack->ant == NULL)
{
std::cout<<"No hay elementos"<<std::endl;
}else
{
Tnodo * aux;
aux->ant = stack->ant;
delete(stack->ant);
stack->ant=aux->ant;
delete(aux);
}
}

int lifo::peek(void)
{
if (stack->ant != NULL)
{
return(stack->ant->datos);
}else
{
std::cout<<"No hay elementos"<<std::endl;
}
}

bool lifo::isEmpty(void)
{
if(stack->ant == NULL)
{
return(false);
}else
{
return(true);
}
}

void lifo::print(void){

Tnodo *aux;
aux->ant = stack->ant;
while(aux->ant != NULL)
{
std::cout<<"|"<<aux->ant->datos<<"|-->";
}
}

y aqui estaba comprobando que  funcionase.
main.cpp
Código:
#include"lifo.h"

void main()
{
lifo pila;
pila.push(5);
pila.print();

}

He estado debugando y el problema son los punteros, pero al declarlos dentro de la clase no se como acceder a ellos bien bien o asignarles valores. Algunos puntos que veo criticos.

stack->ant = &(*nodo);
aux->ant->datos;
stack->datos = 0;
delete(stack->ant);

Gracias


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Problema con punteros.
« Respuesta #1 en: 19 Septiembre 2012, 15:04 pm »

¡Buenas!

Veo un problema aqui (no he seguido leyendo) corrijelo y nos cuentas:

Código
  1. void lifo::push(int new_element)
  2. {
  3. Tnodo *nodo;
  4.  
  5. //No asignas memoria a nodo, solo asignas a nodo->datos el valor del parametro
  6. nodo->datos = new_element;
  7.  
  8. if(stack->ant == NULL)
  9. {
  10. nodo->ant = NULL;
  11. }else
  12. {
  13. [s]nodo->ant = stack->ant;[/s]
  14. }
  15.  
  16. //asignas una direccion de una variable local, ya que no has asignado memoria a nodo
  17. stack->ant = &(*nodo);
  18.  

¡Saludos!


En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
anonimo12121


Desconectado Desconectado

Mensajes: 1.813


Ver Perfil WWW
Re: Problema con punteros.
« Respuesta #2 en: 19 Septiembre 2012, 22:06 pm »

claro se te olvida el operador new
En línea

Página para ganar Bitcoins y Dinero: http://earnbit.hol.es/
Video de YouTube con Hack para el LoL: http://adf.ly/5033746/youtube-lolemuhack
Si quieres ganar dinero con adfly entra y registrate aquí -> http://adf.ly/?id=5033746
vazquinhos

Desconectado Desconectado

Mensajes: 6



Ver Perfil
Re: Problema con punteros.
« Respuesta #3 en: 20 Septiembre 2012, 10:33 am »

He quitado el puntero a Tnodo y ya me funciona la asignacion y todo lo demas, ahora tengo problemas al printar que no me printa nada xdddd.

Gracias!
En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Problema con punteros.
« Respuesta #4 en: 20 Septiembre 2012, 18:35 pm »

He quitado el puntero a Tnodo

¡¡¡¡¡¿¿¿¿¿?????!!!!!

No visualizo lo que dices. ¿Donde estas almacenando la informacion? ¿Puedes poner el codigo?
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con punteros. Urgente: por favor.
Programación C/C++
chemaspain 2 1,642 Último mensaje 29 Mayo 2011, 18:16 pm
por Akai
Problema con Punteros en C
Programación C/C++
aaronas 8 3,769 Último mensaje 2 Abril 2012, 00:12 am
por david_BS
Problema con punteros
Programación C/C++
NEGRO_PABLO 3 2,669 Último mensaje 30 Noviembre 2012, 18:41 pm
por twins
Problema con iterador a lista de punteros
Programación C/C++
SrCooper 4 2,880 Último mensaje 24 Julio 2013, 15:43 pm
por Eternal Idol
problema con doble punteros
Programación C/C++
m@o_614 5 2,108 Último mensaje 30 Enero 2014, 18:20 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines