Miércoles 20 de Noviembre de 2024, 18:39
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Nueva duda programa Pila
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Nueva duda programa Pila (Leído 1846 veces)
Jesus21
Nuevo Miembro
Mensajes: 7
Nueva duda programa Pila
«
en:
Viernes 18 de Marzo de 2011, 18:12 »
0
Este es mi programa y lo que hace es ir metiendo en la pila el residuo de la division y despues ir mostrandolo.
Mi problema esta en las lineas 39 y 42 , me dice lo siguiente
39 expected primary-expression before ',' token
42 expected primary-expression before ')' token
Código: C
#include <iostream.h>
int
x
=
0
,
val
=
0
,
num
=
0
,
base
=
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 vacian"
;
*
pila
=
aux
->
siguiente
;
v
=
aux
->
dato
;
free
(
aux
)
;
return
v
;
system
(
"pause"
)
;
}
void
convertir
(
int
num
,
int
base
)
{
int
aux
=
0
;
aux
=
num
;
do
{
val
=
num
%
base
;
push
(
&
pila
,
val
)
;
num
=
num
/
base
;
cout
<<
"el elemento insertado es:"
<<
val
;
x
=
pop
(
&
pila
)
;
cout
<<
x
;
aux
=
aux
/
base
;
system
(
"pause"
)
;
}
while
(
aux
>
base
)
;
}
main
(
)
{
Pila pila
=
NULL
;
cout
<<
"Codigo binario de un numeronDigita el numeron"
;
cin
>>
num
;
cout
<<
"Digita la base que deseas(2-5)n"
;
cin
>>
base
;
convertir
(
num
,
base
)
;
}
Saludos y de antemano gracias
Tweet
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: Nueva duda programa Pila
«
Respuesta #1 en:
Viernes 18 de Marzo de 2011, 20:01 »
0
Hola de nuevo Jesus21
Primero, no debes usar variables globales.
Código: C
push
(
&
pila
,
val
)
;
x
=
pop
(
&
pila
)
;
pila
no está declarada.
Fr33k K0mpu73r
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: Nueva duda programa Pila
«
Respuesta #2 en:
Viernes 18 de Marzo de 2011, 20:11 »
0
Desafortunadamente estas implementando mal la pila y sus funciones, me parece que necesitas leer mas sobre punteros, typedef y C++, basicamente el error de sintaxis que te marca es debido a que typedef lo que hace es crear un "alias" de una declaracion, por lo tanto cuando declaras:
Código: C++
typedef
Pila
*
pila
;
es como si escribieras:
Código: C++
typedef
tipoNodo
**
pila
;
// Doble apuntador a tipoNodo
Ya que arriba estas poniendo:
Código: C++
typedef
tipoNodo
*
Pila
;
//Pila es alias de apuntador a tipoNodo
Lo que convierte a PIla en un alias para tipoNodo*, (apuntador a tipoNodo), no se si lo comprendas, puede ser algo confuso de entender si no comprendes que typedef contrario a lo que parece, no "crea tipos" si no en realida crea "alias" como dije arriba.
Pero aun cuando corrijas eso, tu codigo no funcionara correctamente ya que esta mal implementado, y explicarte todo y como debes hacerlo excederia el tamaño de una pequeña consulta
, es mas facil que busques en google la manera correcta de hacerlo
Poniendo en google como busqueda "pila usando listas c++", encontre varios enlaces, te dejo el enlace al codigo que me parece es mas adecuado a lo que buscas, por esta vez te hice la busqueda, pero debes aprender a saber hacer busquedas inteligentes tu mismo
http://www.lawebdelprogramador.com/codigo/85/Implementacion_de_una_pila_mediante_lista_enlazada_en_C++.html
Esta escrito para Visual C++, y me parece por la sintaxis de tu codigo que tu usas Turbo C++, aun asi, no creo que te cueste trabajo adaptar el codigo para que funcione en Turbo o el compilador qe utilices.
Saludos y suerte
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
Jesus21
Nuevo Miembro
Mensajes: 7
Re: Nueva duda programa Pila
«
Respuesta #3 en:
Viernes 18 de Marzo de 2011, 20:13 »
0
ahora tengo este codigo:
Código: C
#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 numeronDigita el numeron"
;
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 vacian"
;
*
pila
=
aux
->
siguiente
;
v
=
aux
->
dato
;
free
(
aux
)
;
return
v
;
system
(
"pause"
)
;
}
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
)
;
system
(
"pause"
)
;
}
y me salen estos errores al compilar
Código: Text
52 E:EstructurasincompletosPila_binario.cpp cannot convert `tipoNodo***' to `tipoNodo**' for argument `1' to `void push(tipoNodo**, int)'
56 E:EstructurasincompletosPila_binario.cpp cannot convert `tipoNodo***' to `tipoNodo**' for argument `1' to `int pop(tipoNodo**)'
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: Nueva duda programa Pila
«
Respuesta #4 en:
Viernes 18 de Marzo de 2011, 20:21 »
0
El error es lo mismo que te mencone arriba, estas entendiendo mal como funciona el typedef, y lo que haces es que al crear alias, los * (operador de direccion) se acumulan, creando los errores de compilacion.
ademas como dije esta mal implementada la pila, revisa mi enlace anterior.
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Nueva duda programa Pila