Autor
|
Tema: nueva duda pila en C (Leído 8,613 veces)
|
pakleisito
Desconectado
Mensajes: 5
|
Esta es mi nueva duda ... al compilar me sale error en la funcion convertir cuando llamo a las funciones push y pop. #include <iostream.h> int num=0,base=0,val=0,x=0; typedef struct datos{ int dato; struct datos *siguiente; }tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Pila; typedef Pila *pila; void push (Pila *l,int val); int pop (Pila *l); void push(Pila *pila,int val){ pNodo nuevo; nuevo = (pNodo ) malloc (sizeof(tipoNodo )); nuevo->dato = val; nuevo->siguiente =*pila; *pila = nuevo; } int pop(Pila *pila){ pNodo aux; int v; aux = *pila; if (!aux) cout<<"\npila vacia\n"; *pila = aux->siguiente; v = aux->dato; return v; } void convertir(int num,int base){ int x=0,val=0,aux=0; aux=num; do{ val=num%base; aux=aux/base; void push(&pila,val); cout<<"el elemento insertado es:"<<val; x=pop(&pila); cout<<x; }while(aux>base); } int main (){ Pila pila = NULL; cout << "Codigo binario de un numero\nDigita el numero\n"; cin>>num; cout << "Digita la base que deseas\n"; cin >>base; void convertir (int num,int base); }
Saludos
|
|
« Última modificación: 18 Marzo 2011, 10:22 am por pakleisito »
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
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: void push(&pila,val);
y eso, NO se hace.
|
|
|
En línea
|
|
|
|
pakleisito
Desconectado
Mensajes: 5
|
si mis problemas son exactamente con esas lineas. pero me podrias decir entonces como SI se hace porfavor Gracias
|
|
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
sin el void push(&pila,val);
El void lo utilizas cuando declaras una función, cuando la invocas no lo necesitas.
|
|
|
En línea
|
|
|
|
pakleisito
Desconectado
Mensajes: 5
|
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
Mensajes: 823
|
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. typedef tipoNodo *Pila; typedef Pila *pila;
NO TIENES DEFINIDO PILA!!!
|
|
|
En línea
|
|
|
|
pakleisito
Desconectado
Mensajes: 5
|
ahora tengo este #include <iostream.h> #include <stdlib.h> #include <cstdlib> int x=0,val=0,num=0,base=0; typedef struct datos{ int dato; struct datos *siguiente; }tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Pila; Pila *pila; void push (Pila *l,int val); int pop (Pila *l); void convertir (int num,int base); main (){ Pila pila = NULL; cout << "Codigo binario de un numero\nDigita el numero\n"; cin>>num; cout << "Digita la base que deseas(2-5)\n"; cin >>base; convertir (num,base);} void push(Pila *pila,int val){ pNodo nuevo; nuevo = (pNodo ) malloc (sizeof(tipoNodo )); nuevo->dato = val; nuevo->siguiente =*pila; *pila = nuevo; } int pop(Pila *pila){ pNodo aux; int v; aux = *pila; if (!aux) cout<<"\npila vacia\n"; *pila = aux->siguiente; v = aux->dato; return v; } void convertir(int num,int base){ int aux=0; aux=num; do{ val=num%base; num=num/base; push(&pila,val); }while (num>base); cout<<"el numero es:" <<num; do{ x=pop(&pila); cout<<x; }while (*pila!=NULL); }
Pero tengo errores en las lineas: 52 E:\Estructuras\incompletos\Pila_binario.cpp cannot convert `tipoNodo***' to `tipoNodo**' for argument `1' to `void push(tipoNodo**, int)' 56 E:\Estructuras\incompletos\Pila_binario.cpp cannot convert `tipoNodo***' to `tipoNodo**' for argument `1' to `int pop(tipoNodo**)'
|
|
|
En línea
|
|
|
|
Akai
Desconectado
Mensajes: 823
|
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
Mensajes: 5
|
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
Mensajes: 823
|
Typedef: define un tipo. Simple y llanamente. le dice al compilador que un tipo se refiere a otro. typedef int mis_enteros mis_enteros a; //equivalente a int a;
Tu problema?: typedef struct datos{ int dato; struct datos *siguiente; }tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Pila; 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? typedef struct datos{ int dato; struct datos *siguiente; }tipoNodo;
sin ninguna definición mas. y luego, en el main o donde necesites usar un puntero a dicha estructura: tipoNodo *nombre_que_quieras;
|
|
« Última modificación: 18 Marzo 2011, 20:40 pm por Akai »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda acerca de la pila en VB
Programación Visual Basic
|
Krnl64
|
4
|
2,061
|
21 Julio 2006, 13:38 pm
por Krnl64
|
|
|
[DUDA] mover a la pila
ASM
|
blackray
|
4
|
3,888
|
10 Septiembre 2009, 03:07 am
por blackray
|
|
|
duda en pila con lenguaje c
Programación C/C++
|
king1517
|
2
|
2,965
|
29 Junio 2011, 18:28 pm
por leogtz
|
|
|
Duda: Crear una pila contando palabras encontradas en un string
PHP
|
Darkkz
|
2
|
2,485
|
10 Septiembre 2011, 23:35 pm
por Darkkz
|
|
|
Duda puntero a pila.
Programación General
|
lanun
|
0
|
1,684
|
27 Marzo 2014, 20:05 pm
por lanun
|
|