Pilas C++ usando Estructuras (STRUCT)

Iniciado por charmedever, 19 Octubre 2011, 00:52 AM

0 Miembros y 1 Visitante están viendo este tema.

charmedever

Hola q tal pueden ayudarme el programa debe de permitir insertar 4 elementos y despues visualizarlos de acuerdo al orden en que fueron insertados
Anexo el codigo para q me digan mis errores
//IMPLEMENTA UNA PILA
# include <iostream.h>
# include <conio.h>
# include <stdlib.h>

//prototipos de función
void llenar(char a);
char extraer();

const int tam=4;
char tope=-1;
char pila[tam];

int main()
{
  char a;

  cout<<"LLENAR PILA"<<endl;

  while(tope<tam)
  {
   cin>>a;
   llenar(a);
  }

  cout<<"Pulsar cualquier tecla para continuar";
  getche();
 
  system ("CLS");

  cout<<"Datos de la pila"<<endl;

  extraer();
  getche ();
  return -9;
}//fin main()

void llenar(char a)
{
  if(tope+1 >= tam)
      cout<<"Pila llena"<<endl;

  pila[++tope]=a;
}

char extraer()
{
  while(tope>=0)
  {
   cout<<pila[tope--]<<endl;
   getche ();

   if(tope==-1)
      cout<<"Pila vacia";

  }
}

CeroX901

#1
y donde está el struct ??

-Usar getche(); para pausar la aplicacion?, mejor usa system("pause");

-La declaracion de la librería iostream, está mal hecha, es sin el .h

-En main retornas -9?

-La funcion extraer debe devolver un valor char, no devuelve nada.

Y por ultimo te recomiendo usar string en ves de char para esta ocasion.

PD: cuando vayas a insertar codigo utiliza las etiquetas correspondientes, donde aparece GeSHi en crear mensaje..

Salud2


charmedever

Modifique el codigo como me dijiste
Código (cpp) [Seleccionar]
//IMPLEMENTA UNA PILA
# include <iostream.h>
# include <conio.h>
# include <stdlib.h>
struct pilas
{
       int x;
}pi[3];
//prototipos de función
void llenar(pilas);
int extraer(pilas);
int tope=-1;

int main()
{

  cout<<"LLENAR PILA"<<endl;

  while(tope<3)
  {
                 for (int i=0; i<3; i++)
                 {
                     cin>>pi[i].x;
                     llenar (pi);
                     
                 }
  }

  cout<<"Pulsar cualquier tecla para continuar";
  getche();
 
  system ("CLS");

  cout<<"Datos de la pila"<<endl;

  extraer(pi); 
  getche ();
  return -9;
}//fin main()

void llenar(pilas)
{
  if(tope+1 >=3)
  cout<<"Pila llena"<<endl;
  pi[++tope]=pi[3];
}

int extraer(pilas)
{
  while(tope>=0)
  {
                for (int i=0; i<3; i++)
                {
                    cout <<pi[i].x;
                    cout<<pi[tope--]<<endl;
                }
                getche ();
                if(tope==-1)
                cout<<"Pila vacia";
  }
}

Queta

#3
No hiciste nada de lo que te dijo...

¿Compilaste antes de enseñarnos el código?

Empezando por las librerías, no hace falta ni stdlib ni conio y es más, como bien te dijo CeroX901, iostream va sin la .h final. main sigue devolviendo -9 y no aplicas bien cout.

Cita de: CeroX901 en 19 Octubre 2011, 01:30 AM
-Usar getche(); para pausar la aplicacion?, mejor usa system("pause");

Es mejor, en este caso, usar cin.get. Y tampoco usas bien la función extraer.
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

charmedever

las librerias las uso asi porq estoy trabajando con DEV C++ el iostream.h para cout y cin, conio.h para pausar pantalla getche() y stdlib.h para limpiar pantalla esas librerias siempre las he utilizado, la funcion main puede aceptar cualquier numero entero sea positivo o negativo

Queta

Cita de: charmedever en 19 Octubre 2011, 23:40 PM
las librerias las uso asi porq estoy trabajando con DEV C++

Eso es irrelevante, a parte de que este IDE ya está medio obsoleto y su última actualización no es ni oficial.

Cita de: charmedever en 19 Octubre 2011, 23:40 PM
el iostream.h para cout y cin

Repito, iostream va sin .h final y no usas cout correctamente.

Cita de: charmedever en 19 Octubre 2011, 23:40 PM
conio.h para pausar pantalla getche()

Puedes perfectamente hacer servir una función estándar; ya te dí una solución...

Cita de: charmedever en 19 Octubre 2011, 23:40 PM
stdlib.h para limpiar pantalla

Aunque no es recomendado el uso de system, quizás es el argumento de más peso :rolleyes:.

Cita de: charmedever en 19 Octubre 2011, 23:40 PM
la funcion main puede aceptar cualquier numero entero sea positivo o negativo

Exactamente, y la coherencia juega un papel importante en el desarrollo de un programa.
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

rir3760

Si se trata de compilar tu programa en Dev-C++ con las opciones predeterminadas se genera el mensaje:
#warning This file includes at least one deprecated or antiquated header.
Please consider using one of the 32 headers found in section 17.4.1.2 of the C++
standard. Examples include substituting the <X> header for the <X.h> header for
C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To
disable this warning use -Wno-deprecated.

Ello en relación a la inclusión de <iostream.h>, caso similar con <stdlib.h>. En cuanto a <conio.h> no es necesario utilizarla.

En cuanto a la función principal esta debe retornar cero o bien un valor distinto en caso de error (tu devuelves 9 de forma indiscriminada).

En mi opinión deberías revisar alguna pagina sobre pilas en la red (por ejemplo Wikipedia) y rescribir el programa desde cero ya que tiene varios errores.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Queta

En definitiva, lo que le intentamos explicar CeroX901 y yo y no entendió.
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.

CeroX901

No sé exactamente lo que pide, recuerdo mi primer programa en la U que trataba sobre Listas doblemente enlazadas con estructuras y punteros, me quedó hermoso  ese programa :xD, no sé si quiere hacer lo mismo..

charmedever

Hola modifique el codigo lo compile con DEV C++ y me corre, me deja ingresar 4 elementos de tipo entero pero no me deja visualizarlos en el orden en q los ingrese
Anexo el codigo
Código (cpp) [Seleccionar]
//IMPLEMENTA UNA PILA
# include <iostream.h>
# include <conio.h>
# include <stdlib.h>
struct pilas
{
       int x;
}pi[3];
//prototipos de función
void llenar(pilas);
int extraer(pilas);
int tope=-1;

int main()
{

  cout<<"LLENAR PILA"<<endl;

  while(tope<3)
  {
                 for (int i=0; i<3; i++)
                 {
                     cin>>pi[i].x;
                     llenar (pi[i]);
                 }
  }
  cout<<"Pulsar cualquier tecla para continuar";
  getche();
  system ("CLS");
  cout<<"Datos de la pila"<<endl;
  for (int i=0; i<3; i++)
  {
      cout <<pi[i].x;
      extraer(pi[i]);
  }
  getche ();
  return 0;
} //fin de main

void llenar(pilas)
{
  if(tope+1 >=3)
  cout<<"Pila llena"<<endl;
  pi[++tope]=pi[3];
}

int extraer(pilas)
{
  while(tope>=0)
  {
                for (int i=0; i<3; i++)
                {
                    pi[--tope]=pi[3];
                    getche ();
                }
                if(tope==-1)
                cout<<"Pila vacia";
  }
  return 0;
}