Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Claro, gets(t), utiliza t como un buffer, como lo has definido como char* t = "dentro"; apunta a la cadena dentro, de 6 caracteres. Aquí vas a guardar las cadenas que introduzcas por el teclado. Si te pasas de caracteres... ERROR en tiempo de ejecución. Por otro lado, siempre apunta a la última cadena.

Prueba esto y te darás cuenta:

Código:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

typedef struct _nodo{
        char *url;
        int n;
        struct _nodo *siguiente;
        }TipoNodo;

typedef TipoNodo *pNodo;
typedef TipoNodo *Pila;

void Push(Pila *l,char *web);
char* Pop(Pila *l);

int main(){
  Pila pila= NULL;
  char t[256]; // buffer de 255 caracteres + /0

do{
  printf("Introduzca la pagina web a visitar\n");
  gets(t);
  // t siempre apunta al buffer, por lo que siempre apilas un puntero que apunta al buffer que es la última cadena... 
  Push(&pila,t);  
} while(strcmp(t,"salir"));  // "salir" también ha sido apilada, por lo que es la última cadena y la UNICA que printf puede ver...

while(pila->siguiente!=NULL){
  Pop(&pila);
  printf("%d %s\n",pila->n, pila->url);
}


  printf("Final presione una tecla para continuar...");
  getch();
  return 0;  
    }

void Push(Pila *pila,char *web){
  pNodo nuevo;
  nuevo= (pNodo)malloc(sizeof(TipoNodo));
  if(*pila==0) nuevo->n=0;
  else nuevo->n=(*pila)->n+1;
  nuevo->url= web;
  nuevo->siguiente= *pila;
  *pila=nuevo;
}

char* Pop(Pila *pila){
      pNodo nodo;
      char *val;
      nodo=*pila;
      if(!nodo) return "Vacio";
      *pila= nodo->siguiente;
      val=nodo->url;
      free(nodo);
      return val;
}
Saludos.

Última edición por escafandra fecha: 10-04-2008 a las 19:17:32.
Responder Con Cita
  #2  
Antiguo 11-04-2008
Avatar de ramphi
ramphi ramphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santo Domingo, Rep. Dominicana
Posts: 42
Poder: 0
ramphi Va por buen camino
Question problema en estructura

bien ya he comprendido esa parte pero entonces, como puedo hacer para que no se pierdan los valores introducidos y puedan ser impresos al final.

pues con esta forma tambien solo me imprime la ultima paguina y necesito que se impriman todos.
__________________
Novato en busqueda de Avance

Última edición por ramphi fecha: 11-04-2008 a las 18:22:56. Razón: falta de especificacion
Responder Con Cita
  #3  
Antiguo 12-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Pues tienes dos formas. O reservas espacio para las cadenas url en la estructura url[256] o lo asignas dinámicamente y lo liberas al desapilar.
Por supuento, entonces, el almacenaje de las cadenas lo harás con un strcpy, y no con una asignación de puntero.

Si en lugar de usar C, usas C++ es mas fácil el uso de los operadores new y delete.

Saludos.
Responder Con Cita
  #4  
Antiguo 12-04-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
OFFTOPIC: En Delphi (y por tanto también en C++) existen clases que implementan las pilas (FIFO) y colas (LIFO), de memoria creo recordar:
TStackqueue
Tqueue

y sé que hay algunas más, en la ayuda o en la unidad classes estarán.

Si tienes que implementarlo tú, pues ajo y agua .

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 12-04-2008
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.210
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Me da la impresión de que tiene que implementarlo él, además, esta usando C y no C++ (por la forma de asignar memoria...), si es así, no puede usar las VCL.

Saludos.
Responder Con Cita
  #6  
Antiguo 12-04-2008
Avatar de ramphi
ramphi ramphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santo Domingo, Rep. Dominicana
Posts: 42
Poder: 0
ramphi Va por buen camino
ok

en realidad estoy usando c++, intentare todo lo que me sugieren y luego les digo como me fue.

gracias por la ayuda.
__________________
Novato en busqueda de Avance

Última edición por ramphi fecha: 12-04-2008 a las 23:02:04.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Estructura de un CD david duarte Varios 4 27-10-2005 17:48:50
Actualizar estructura Garada Firebird e Interbase 2 15-10-2004 08:34:40
estructura de una tabla Salomon Firebird e Interbase 3 14-05-2004 15:26:46
Averiguar estructura de frm brandolin MySQL 0 20-10-2003 22:23:57
Imprimir Estructura agora18 Conexión con bases de datos 3 07-10-2003 19:19:22


La franja horaria es GMT +2. Ahora son las 19:40:34.


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