elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:51  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Pilas C++ usando Estructuras (STRUCT)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pilas C++ usando Estructuras (STRUCT)  (Leído 1,234 veces)
charmedever

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Pilas C++ usando Estructuras (STRUCT)
« en: 19 Octubre 2011, 00:52 »

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";

  }
}


En línea
CeroX901

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #1 en: 19 Octubre 2011, 01:30 »

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



« Última modificación: 19 Octubre 2011, 01:31 por CeroX901 » En línea
charmedever

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #2 en: 19 Octubre 2011, 23:09 »

Modifique el codigo como me dijiste
Código
//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";
 }
}
 
En línea
Queta

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #3 en: 19 Octubre 2011, 23:24 »

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.

-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.
« Última modificación: 19 Octubre 2011, 23:34 por Queta » En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
charmedever

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #4 en: 19 Octubre 2011, 23:40 »

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
En línea
Queta

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #5 en: 19 Octubre 2011, 23:47 »

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.

el iostream.h para cout y cin

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

conio.h para pausar pantalla getche()

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

stdlib.h para limpiar pantalla

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

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.
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
rir3760


Desconectado Desconectado

Mensajes: 382


Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #6 en: 19 Octubre 2011, 23:53 »

Si se trata de compilar tu programa en Dev-C++ con las opciones predeterminadas se genera el mensaje:
Código:
#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
En línea

The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Queta

Desconectado Desconectado

Mensajes: 250



Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #7 en: 19 Octubre 2011, 23:56 »

En definitiva, lo que le intentamos explicar CeroX901 y yo y no entendió.
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
CeroX901

Desconectado Desconectado

Mensajes: 22



Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #8 en: 20 Octubre 2011, 01:36 »

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..
En línea
charmedever

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #9 en: 20 Octubre 2011, 02:05 »

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
//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;
}
 
En línea
Ferno

Desconectado Desconectado

Mensajes: 282


Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #10 en: 21 Octubre 2011, 00:54 »

Por supuesto que no te deja visualizarlo, esa no es la funcionalidad de una pila. No estás usando la estructura correcta (o al menos la más eficiente) para hacerlo.
Para ingresar y extraer exactamente en el orden en que ingresaste el dato, es mejor usar una Cola (First in, First out). La pila (First in, Last out) va extrayendo en base al último dato que ingresaste en ella, es decir, el tope.
En línea
terym

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #11 en: 21 Noviembre 2011, 20:52 »

hola disculpen soy nueva en esto y me encontre con este foro q me parecio interesante y creo q me podria ayudar estoy implementando una pila
#include <stdio.h>
#include <stdlib.h>


  /* declaracion */
struct tpila{
  int clave;
  struct tpila *sig;
};
   /* prototipos e implementacion */

void crear(struct tpila **pila);
int vacia(struct tpila *pila);
void apilar(struct tpila *pila, int elem);
int desapilar(struct tpila *pila,int *elem);
void imprimirpila( struct tpila *ptrActual,struct tpila *pila);


void imprimirpila( struct tpila *ptrActual,struct tpila *pila)
{


    printf( "La pila es:\n\n" );


    while ( ptrActual != NULL) {
        printf( "%d -> ", ptrActual->clave );
       ptrActual= pila->sig;
       pila->sig= ptrActual;
       system("pause");



    }
     printf( "apunta a null\n" );


}




void crear(struct tpila **pila)
{  *pila = (struct tpila *) malloc(sizeof(struct tpila));

  (*pila)->sig = NULL;

  printf("pila creada\n");
}

int vacia(struct tpila *pila){
  return (pila->sig == NULL);
}

void apilar(struct tpila *pila, int elem){
  struct tpila *nuevo;

  nuevo = (struct tpila *) malloc(sizeof(struct tpila));


  nuevo->clave = elem;
   nuevo->sig = pila->sig;
  pila->sig = nuevo;
}

 int desapilar(struct tpila *pila,int *elem){
  struct tpila *aux;


  aux = pila->sig;
  *elem= aux->clave;
  pila->sig = aux->sig;
  free(aux);
  return *elem;
}

   /* programa de prueba */
int main(void)
{
  struct tpila *pila;
  int elem,opc,reg;
  crear(&pila);

do{
  printf("que deseas hacer  1)apilar 2)desapilar 3)imprimir\n");
  scanf("%d",&opc);


  switch(opc){

    case 1:

    printf("introduce el numero a apilar");
      scanf("%d",&elem);
     apilar(pila,elem);
   printf("pulse la tecla 5 para regresar al menu principal");
    scanf("%d",&reg);
    break;

    case 2:
    if(!vacia(pila)){
     desapilar(pila,&elem);
     printf( "elemento retirado\n");
    }
                else
                    printf( "La pila esta vacia\n" );
                break;

    case 3:
    if ( !vacia( pila ) )
    imprimirpila( pila );
                else
                    printf( "La pila esta vacia\n" );
                    printf("pulse la tecla 5 para regresar al menu principal");
    scanf("%d",&reg);
                break;

    }

}
  while(reg==5);
return 0;



}
 les vuelvo a comentar soy principiante si alguien me podri ayudar les agradeceria mucho el error esta ala hora de imprimir no me imprime todos los elementos de la lista le dejo mi correo por detecta el error terezza_31@hotmail.com
En línea
RyogiShiki


Desconectado Desconectado

Mensajes: 709


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #12 en: 21 Noviembre 2011, 21:03 »

éste hilo lleva innactivo más de un mes. No está perimitido revivir hilos antiguos. Lo mejor es que crees un nuevo tema, Y cuando bayas a colocar el código hazlo usando GeSHi (extremo superior derecho de las herramientas de edición de un mensaje)

Saludos
En línea

RHL


Conectado Conectado

Mensajes: 968


mental


Ver Perfil
Re: Pilas C++ usando Estructuras (STRUCT)
« Respuesta #13 en: 21 Noviembre 2011, 21:11 »

En la funcion de imprimir e falta un parametro que es el puntero donde se encuentra una instruccion de la pila
en ensamblador seria el registro BP

tambie otra cosa... la declaracion de los prototipos se usa para indicarle al compilador que en
algunas parte se encuentran dichas funciones en el archivo fuente... los prototipos se pueden
omitir si las funciones estan declaradas antes de la funcion main...
« Última modificación: 21 Noviembre 2011, 23:20 por RHL » En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pilas y estructuras « 1 2 »
Programación C/C++
Nakp 22 2,054 Último mensaje 30 Mayo 2008, 15:40
por Nakp
Duda con estructuras (struct)
Programación C/C++
alexis33de 1 662 Último mensaje 28 Agosto 2010, 03:41
por Littlehorse
ayuda con estructuras de datos "pilas"
Programación C/C++
josue_tux 2 1,472 Último mensaje 14 Marzo 2011, 05:55
por josue_tux
Proyecto Arreglo con estructuras (struct) En C++
Programación C/C++
Antarezx 0 1,033 Último mensaje 26 Septiembre 2011, 00:26
por Antarezx
C++ Problema propuesto usando estructuras repetitivas
Programación C/C++
Franz1628 3 487 Último mensaje 27 Enero 2012, 23:45
por theluigy13etv
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines