Ver Mensaje Individual
  #7 (permalink)  
Antiguo 03/07/2010, 17:20
maur1c10
 
Fecha de Ingreso: octubre-2009
Mensajes: 25
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: ayuda con pilas

bueno ahi pongo de nuevo el codigo con los errores en rojo y que error dice el programa turbo c++

Cita:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream.h>
#include <string.h>

#define TRUE 1
#define FALSE 0
#define STACKSIZE 100
#define num 9

/* definicion de tipos de datos */
typedef char STACKELEMENT;
typedef struct {
int top;
STACKELEMENT items[STACKSIZE];
} STACK;

/* estructura de datos vehiculo */
struct vehiculo{
char placa[7];
char cat[14];
char marca[15];
char nombre[50];
} vehiculo[num];


/*prototipos de funciones de la pila y funciones para el tipo vehiculo */
int introducir(STACK , int n);
int retirar(STACK , STACK , int n);
void verificar(STACK , int n);
void Clear(STACK *);
int Empty(STACK *);
int Full(STACK *);
STACKELEMENT Pop(STACK *);
void Push(STACK *, vehiculo); // ) expected

/* funcion principal */
void main() {
STACKELEMENT a;
int p, i;
STACK b;
STACK *c=&b;
STACK d;
STACK *e=&d;
d.top=-1;
b.top=-1;
clrscr();
int op, n=0;

printf("\n digite un numero segun la accion que desea realizar:\n1.Intruducir un vehiculo \n2.Retirar un vehiculo \n3.Verificar informacion de ultimo vehiculo ingresado \n4.Salir \n");
scanf("%i", &op);
switch(op)
{
case 1:introducir(*c, n);
break;
case 2:retirar(*c, *e, n);
break;
case 3:verificar(*c, n);
break;
case 4:exit(1);
break;
}
getch();
}


/* funcion para introducir datos de vehiculo */
int introducir(STACK c, int n)
{
char kat[3];
printf("\n digite el nombre del propietario:\n");
cin.getline (vehiculo[n].nombre,50);
printf("\m digite el no. de placa del vehiculo (max. 6 digitos)\n:");
cin.getline (vehiculo[n].placa,7);
printf("\n digite la marca del vehiculo:\n");
cin.getline (vehiculo[n].marca,15);;
printf("\n digite la categoria del vehiculo segun la letra mostrada:\n p-particular mb-microbus a-alquiler c-camion \n");
gets(kat);
if(kat[0]=='p')
strcpy(vehiculo[n].cat,"particular");
else
if((kat[0]=='m')&&(kat[1]=='b'))
strcpy(vehiculo[n].cat,"microbus");
else
if(kat[0]=='a')
strcpy(vehiculo[n].cat,"alquiler");
else
if(kat[0]=='c')
strcpy(vehiculo[n].cat,"camion");
else
printf("\n esa categoria no existe");
n++;
Push(c, vehiculo[n]); // function Push should have a prototype
getch();
return n;
}

/* funcion para retirar vehiculo usando la placa como identificador */
int retirar(STACK c, STACK e, int n)
{
STACK p;
STACK *p1=&p;
p.top=-1;
char plak[7];
printf("\n digite el numero de placa del vehiculo que desea retirar:\n");
gets(plak);
if(vehiculo[n].placa==plak)
e=Pop(&c); // Cannot convert 'char' to 'STACK'
else
{
while((vehiculo[n].placa!=plak)&&((&c)!=NULL))
e=Pop(&c); // Cannot convert 'char' to 'STACK'
if(vehiculo[n].placa==plak)
{
p1=Pop(&c); // Cannot convert 'char' to 'STACK'
printf("\n vehiculo retirado exitosamente");
n--;
while((&e)!=NULL)
c=Pop(&e); // Cannot convert 'char' to 'STACK'
}
else
while((&e)!=NULL)
c=Pop(&e); // Cannot convert 'char' to 'STACK'
}
getch();
return n;
}

/* funcion para revisar informacion del ultimo vehiculo ingresado */
void verificar(STACK c,int n)
{
if(Empty(&c))
{
printf("\n no hay vehiculos en el estacionamiento");
exit(1);
}
printf("\n datos del ultimo vehiculo ingresado:");
printf("\n\n nombre del propietario:\n");
cout << vehiculo[n].nombre;
printf("\n\n no. de placa del vehiculo:\n");
cout << vehiculo[n].placa;
printf("\n\n marca del vehiculo:\n");
cout << vehiculo[n].marca;
printf("\n\n categoria del vehiculo:\n");
cout << vehiculo[n].cat;
}


/* limpia la pila */
void Clear(STACK * ps) {
ps->top= -1 ;
}

/* verifica si la pila esta vacia */
int Empty(STACK * ps) {
if (ps->top == -1)
return(TRUE);
else
return(FALSE);
}

/* verifica si la pila esta llena, si ya no se pueden introducir mas elementos en el arreglo */
int Full(STACK * ps) {
if (ps->top == STACKSIZE - 1)
return(TRUE);
else
return(FALSE);
}

/* introduce un elemento en la pila */
void Push(STACK * ps, vehiculo x) { // ) expected
if (Full(ps)) {
printf("%s","Pila desbordada");
exit(1); }
else
ps->items[++(ps->top)]=x;
}
/* quita un elemento de la pila y lo devuelve */
STACKELEMENT Pop(STACK * ps) {
if (Empty(ps)) {
printf("%s","Pila subdesbordada");
exit(1); }
return(ps->items[(ps->top)--]);
}