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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


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

Desconectado Desconectado

Mensajes: 5


Ver Perfil
nueva duda pila en C
« en: 18 Marzo 2011, 07:25 am »

Esta es mi nueva duda ... al compilar me sale error en la funcion convertir cuando llamo a las funciones push y pop.

Código
  1. #include <iostream.h>
  2. int num=0,base=0,val=0,x=0;
  3. typedef struct datos{
  4.        int dato;
  5.        struct datos *siguiente;
  6.        }tipoNodo;
  7.  
  8. typedef tipoNodo *pNodo;
  9. typedef tipoNodo *Pila;
  10. typedef Pila *pila;
  11.  
  12. void push (Pila *l,int val);
  13. int pop (Pila *l);
  14.  
  15. void push(Pila *pila,int val){
  16.     pNodo nuevo;
  17.     nuevo = (pNodo) malloc (sizeof(tipoNodo));
  18.     nuevo->dato = val;
  19.     nuevo->siguiente =*pila;
  20.     *pila = nuevo;
  21.     }
  22.  
  23. int pop(Pila *pila){
  24.     pNodo aux;
  25.     int v;
  26.     aux = *pila;
  27.     if (!aux) cout<<"\npila vacia\n";
  28.     *pila = aux->siguiente;
  29.     v = aux->dato;
  30.     free (aux);
  31.     return v;
  32.     system ("pause");
  33.     }
  34.  
  35. void convertir(int num,int base){
  36.            int x=0,val=0,aux=0;
  37.                  aux=num;
  38.                  do{
  39.                  val=num%base;
  40.                  aux=aux/base;
  41.                  void push(&pila,val);
  42.                  cout<<"el elemento insertado es:"<<val;
  43.                  x=pop(&pila);
  44.                  cout<<x;
  45.                  system("pause");
  46.                  }while(aux>base);
  47.  
  48.            }    
  49.  
  50.  
  51.  
  52. int main (){
  53.     Pila pila = NULL;
  54.     cout << "Codigo binario de un numero\nDigita el numero\n";
  55.     cin>>num;
  56.     cout << "Digita la base que deseas\n";
  57.     cin >>base;
  58.     void convertir (int num,int base);
  59.  
  60. }
  61.  

Saludos


« Última modificación: 18 Marzo 2011, 10:22 am por pakleisito » En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: nueva duda pila en C
« Respuesta #1 en: 18 Marzo 2011, 13:16 pm »

Cuando dices "error al compilar" podrías al menos poner el error. Pero bueno, me siento generoso y voy a intentar compilar tu código ¬¬

1) Iostream se incluye sin el .h

2) usas malloc y free sin incluir cstdlib

3) La implementación de tus funciones, debería ir debajo del main, o no poner las declaraciones.

4) en convertir haces esto:
Código
  1. void push(&pila,val);
y eso, NO se hace.


En línea

pakleisito

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: nueva duda pila en C
« Respuesta #2 en: 18 Marzo 2011, 15:33 pm »

si mis problemas son exactamente con esas lineas.
pero me podrias decir entonces como SI se hace porfavor
Gracias :)
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: nueva duda pila en C
« Respuesta #3 en: 18 Marzo 2011, 15:36 pm »

sin el void

Código
  1. push(&pila,val);

El void lo utilizas cuando declaras una función, cuando la invocas no lo necesitas.
En línea

pakleisito

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: nueva duda pila en C
« Respuesta #4 en: 18 Marzo 2011, 15:39 pm »

pero por que me sale este error en la funcion convertir exactamente al llamar a push y pop
42 expected primary-expression before ',' token
44 expected primary-expression before ')' token

Gracias =)
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: nueva duda pila en C
« Respuesta #5 en: 18 Marzo 2011, 18:36 pm »

Básicamente porque tu código está mal. Usas typedef como quien no quiere la cosa y sin saber lo que hace, tengo la impresión.

Código
  1. typedef tipoNodo *Pila;
  2. typedef Pila *pila;

NO TIENES DEFINIDO PILA!!!
En línea

pakleisito

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: nueva duda pila en C
« Respuesta #6 en: 18 Marzo 2011, 20:08 pm »

ahora tengo este
Código
  1. #include <iostream.h>
  2. #include <stdlib.h>
  3. #include <cstdlib>
  4. int x=0,val=0,num=0,base=0;
  5. typedef struct datos{
  6.        int dato;
  7.        struct datos *siguiente;
  8.        }tipoNodo;
  9.  
  10. typedef tipoNodo *pNodo;
  11. typedef tipoNodo *Pila;
  12. Pila *pila;
  13.  
  14. void push (Pila *l,int val);
  15. int pop (Pila *l);
  16. void convertir (int num,int base);
  17.  
  18. main (){
  19.     Pila pila = NULL;
  20.     cout << "Codigo binario de un numero\nDigita el numero\n";
  21.     cin>>num;
  22.     cout << "Digita la base que deseas(2-5)\n";
  23.     cin >>base;
  24.     convertir (num,base);}
  25.  
  26. void push(Pila *pila,int val){
  27.     pNodo nuevo;
  28.     nuevo = (pNodo) malloc (sizeof(tipoNodo));
  29.     nuevo->dato = val;
  30.     nuevo->siguiente =*pila;
  31.     *pila = nuevo;
  32.     }
  33.  
  34. int pop(Pila *pila){
  35.     pNodo aux;
  36.     int v;
  37.     aux = *pila;
  38.     if (!aux) cout<<"\npila vacia\n";
  39.     *pila = aux->siguiente;
  40.     v = aux->dato;
  41.     free (aux);
  42.     return v;
  43.     system ("pause");
  44.     }
  45.  
  46. void convertir(int num,int base){
  47.                  int aux=0;
  48.                  aux=num;
  49.                  do{
  50.                  val=num%base;
  51.                  num=num/base;
  52.                  push(&pila,val);
  53.                  }while (num>base);
  54.                  cout<<"el numero es:" <<num;
  55.                  do{
  56.                  x=pop(&pila);
  57.                  cout<<x;
  58.                  }while (*pila!=NULL);
  59.                  system("pause");
  60. }


Pero tengo errores en las lineas:
Código
  1. 52 E:\Estructuras\incompletos\Pila_binario.cpp cannot convert `tipoNodo***' to `tipoNodo**' for argument `1' to `void push(tipoNodo**, int)'
  2.  
  3. 56 E:\Estructuras\incompletos\Pila_binario.cpp cannot convert `tipoNodo***' to `tipoNodo**' for argument `1' to `int pop(tipoNodo**)'
  4.  
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: nueva duda pila en C
« Respuesta #7 en: 18 Marzo 2011, 20:13 pm »

te sobra el &.

Aun así, te sigo diciendo, no sabes como funciona el typedef, y lo usas sin ton ni son.
En línea

pakleisito

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: nueva duda pila en C
« Respuesta #8 en: 18 Marzo 2011, 20:20 pm »

ya se que no se usarlos correctamente ... pero me podrías explicar entonces que es lo que tengo que hacer para solucionarlo??

y si le quito los & entonces seria como si los apuntadores estuvieran de mas y el programa se truncaría.
En línea

Akai


Desconectado Desconectado

Mensajes: 823



Ver Perfil
Re: nueva duda pila en C
« Respuesta #9 en: 18 Marzo 2011, 20:36 pm »

Typedef: define un tipo. Simple y llanamente. le dice al compilador que un tipo se refiere a otro.
Código
  1. typedef int mis_enteros
  2. mis_enteros a;
  3. //equivalente a
  4. int a;

Tu problema?:

Código
  1. typedef struct datos{
  2.        int dato;
  3.        struct datos *siguiente;
  4.        }tipoNodo;
  5.  
  6. typedef tipoNodo *pNodo;
  7. typedef tipoNodo *Pila;
  8. Pila *pila;

tiponodo lo defines como un struct de nombre dato.

defines el tipo pNodo como tiponodo* y lo mismo con Pila

Y luego, defines una Pila* (tipo no definido) como pila.

Resultado? tu pila es un tiponodo**

Posible solución?

Código
  1. typedef struct datos{
  2.        int dato;
  3.        struct datos *siguiente;
  4.        }tipoNodo;
  5.  
sin ninguna definición mas.

y luego, en el main o donde necesites usar un puntero a dicha estructura:
Código
  1. tipoNodo *nombre_que_quieras;
« Última modificación: 18 Marzo 2011, 20:40 pm por Akai » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda acerca de la pila en VB
Programación Visual Basic
Krnl64 4 2,039 Último mensaje 21 Julio 2006, 13:38 pm
por Krnl64
[DUDA] mover a la pila
ASM
blackray 4 3,854 Último mensaje 10 Septiembre 2009, 03:07 am
por blackray
duda en pila con lenguaje c
Programación C/C++
king1517 2 2,922 Último mensaje 29 Junio 2011, 18:28 pm
por leogtz
Duda: Crear una pila contando palabras encontradas en un string
PHP
Darkkz 2 2,468 Último mensaje 10 Septiembre 2011, 23:35 pm
por Darkkz
Duda puntero a pila.
Programación General
lanun 0 1,654 Último mensaje 27 Marzo 2014, 20:05 pm
por lanun
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines