Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-06-2012
woduro woduro is offline
Miembro
 
Registrado: sep 2006
Posts: 16
Poder: 0
woduro Va por buen camino
Exclamation apuntadores a apuntadores

Hola amigos, tengo un problema con c++, hice un codigo que supuestamente funciona al correrlo en frio sin embargo en el compilador es otra historia, el problema es con apuntadores.

estoy creando un arbol a partir de un archivo, el cual tiene el siguente formato: padre nombre sexo edad, el arcivo es leido a la perfección y se crea un nuevo nodo en el cual se ingresan los datos del registro, el nodo tiene la siguiente estructura:

struct persona{char nombre[10];
char sexo;
unsigned int edad;};

struct nodo{persona info;
nodo *i,*c,*d;
};

nodo *raiz;


//una vez leido cada registro se llama a la funcion ingresa(&raiz,nuevo,padre);




int ingresa(nodo **rz, nodo *nuevo, char padre[10]){ // rz recibe la dirección de la raiz, nuevo al nuuevo nodo y padre al nombre del padrenodo *r=*rz; // r es una variable apuntador a nodo donde asigno el valor al cual apunta rz para poder trabajar con el// el problema es que por alguna razón al hacer la asignación de r=*rz donde r deberia recibir el valor de la raiz, lo que recibe
// es el valor de nuevo

if(r==NULL){
r=nuevo; *rz=r; return 1;
//asigno el valor de r a la dirección rz osea a la raiz, a pesar de que este es el unico sitio donde se hace
// esta asignación y de que aquientra una sola vez el valor de la raiz cambia siemprea al ultimo nodo// "procesado"
}else{

if(r->info.nombre==padre){
//esto nunca se cumple porque r->info.nombre tiene el mismo valor que nuevo->info.nombre

// aqui va el codigo de la insercion recursiva el cual es irrelevante pues el problema esta en r

//la llamada recursiva es asi ingresa(&r->i,nuevo,padre) para r->i, r->c, r->d pero nunca llega hasta aqui...

}
}



el caso es que no se crea el arbol y siempre el valor de la raiz es el ultimo nodo procesado, alguien tiene alguna idea de por que ocurre esto o como solucionarlo??
Responder Con Cita
  #2  
Antiguo 26-06-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Aclara un poco más tu pregunta. Esa convinación de código y comentarios es muy difícil de descifrar.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 26-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Responder Con Cita
  #4  
Antiguo 26-06-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola woduro.

Cita:
por alguna razón al hacer la asignación de r=*rz donde r deberia recibir el valor de la raiz, lo que recibe es el valor de nuevo
El mensaje está bastante confuso como ya te han comentado, y no sé si entendí la situación. Pero si por ejemplo tenés una función:
Código:
int func(nodo **rz, nodo *nuevo, ...)
{
  r = *rz;
  printf("%s %s", r->info.nombre, nuevo->info.nombre);
}
Y le pasas los argumentos de este modo:
Código:
...
  func(&raiz, nuevo);
...
La única manera que veo de que r reciba el valor de nuevo es que raiz y nuevo apunten al mismo nodo o tengan el mismo valor.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 26-06-2012 a las 13:38:45.
Responder Con Cita
  #5  
Antiguo 26-06-2012
woduro woduro is offline
Miembro
 
Registrado: sep 2006
Posts: 16
Poder: 0
woduro Va por buen camino
Resuelto... Ocurre que el nuevo era creado una sola vez antes de entar al bucle que lee el archivo por lo tanto siempre usaba la misma dirección, esa es la razón por la cual la raiz y el nuevo siempre tenian el mismo valor.

El codigo esta en negritas y los comentarios normal no le veo lo confuso, quizas que dentro de los commentarios hay partes resaltadas en negritas pero ye se sabe que son comenterios, en fin cada cual programa a su modo...
Responder Con Cita
  #6  
Antiguo 26-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.043
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por woduro Ver Mensaje
El codigo esta en negritas y los comentarios normal no le veo lo confuso, quizas que dentro de los commentarios hay partes resaltadas en negritas pero ye se sabe que son comenterios, en fin cada cual programa a su modo...
No es eso...
Tal y como he comentado antes, recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda con LISTAS(con cursores,arreglos y apuntadores) velapuerca88 Varios 10 23-05-2011 03:14:57
Ayucon apuntadores o punteros alextmb OOP 9 10-11-2005 23:54:15
Enviar un AdoQuery entre dll's con apuntadores nacho Tablas planas 2 27-09-2005 23:50:15
Pila con Listas enlazadas (problema con apuntadores) desve Varios 2 30-03-2005 10:07:47


La franja horaria es GMT +2. Ahora son las 20:14:15.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi