Resultados 1 al 4 de 4

ejercicios en C

Esta es una discusión para el tema ejercicios en C en el foro Programación, bajo la categoría Webmasters y Programadores; Hola, necesito ayuda para terminar un ejercicio que tengo que hacer, os pago lo que tengo hecho: los includes y define: Código: #include <stdio.h> #include <stdlib.h> #define STAY 1 // ...
Página: 1


  1. #1
    Senior Member

    Fecha de ingreso
    13 jul, 06
    Ubicación
    Elche
    Mensajes
    333
    Hola, necesito ayuda para terminar un ejercicio que tengo que hacer, os pago lo que tengo hecho:



    los includes y define:

    Código:
    #include <stdio.h>
    
    #include <stdlib.h>
    
    
    
    #define STAY 1 // se queda en el menu
    
    #define EXIT  0 // sale del menu, opcion exit


    declaro la estructura tPila:

    Código:
    struct tpila
    
    {
    
      int clave;
    
      struct tpila *sig;
    
    };


    luego las funciones (void) y el menu (int):

    Código:
    int menu()
    
    {
    
        int i;
    
        clrscr();
    
        printf("\n\n\t\t\t <>------------------------------<>");
    
        printf("\n\t\t\t   * Probando Funciones de Pila *");
    
        printf("\n\t\t\t <>------------------------------<>");
    
        printf("\n\n\n\t 1 Insertar Elemento");
    
        printf("\n\t 2 Ver tope");
    
        printf("\n\t 3 Eliminar tope");
    
        printf("\n\t 4 Vaciar Pila");
    
        printf("\n\t 5 Visualizar Pila");
    
        printf("\n\t 6 Exit -->");
    
        do
    
        {
    
                     printf("\n\n\n\t >-----------------<");
    
                     printf("\n\n\n\t Elige una opcion:\n ");
    
                     printf("\n\t ---> "); scanf("%d",&i);
    
        }
    
        while(i<0 || i > 6);
    
        return(i);
    
    }
    
    
    
    void crear(struct tpila **pila);
    
    int vacia(struct tpila *pila);
    
    void apilar(struct tpila *pila, int elem);
    
    void desapilar(struct tpila *pila, int *elem);
    
    
    
    
    
    void crear(struct tpila **pila)
    
    {
    
      *pila = (struct tpila *) malloc(sizeof(struct tpila));
    
      (*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;
    
    }
    
    
    
    void desapilar(struct tpila *pila, int *elem)
    
    {
    
      struct tpila *aux;
    
    
    
      aux = pila->sig;
    
      *elem = aux->clave;
    
      pila->sig = aux->sig;
    
      free(aux);
    
    }
    
    
    
    int vacia(struct tpila *pila)
    
    {
    
      return (pila->sig == NULL);
    
    }


    y por ultimo el main():

    Código:
    main()
    
    {
    
    	int fin;
    
    	struct pila *pila;
    
        int elem;
    
        crear(&pila);
    
    	
    
    	for(fin=STAY; fin;) {
    
    		switch(menu()) {
    
    			case 1:
    
                     clrscr();
    
    				 crear(&pila);
    
    				 break;
    
    			case 2:
    
                     clrscr();
    
                     if (vacia(pila))
    
                     {
    
                     printf("\n\t Pila vacia!");
    
                     printf("\n\t "); system("pause");
    
                     }
    
                     else apilar(pila, 1);
    
                     printf(apilar);
    
    				 break;
    
    			case 3:
    
                     clrscr();
    
                     if (vacia(pila))
    
                     {
    
                     printf("\n\t Pila vacia!");
    
                     printf("\n\t "); system("pause");
    
                     }
    
                     else{
    
    				 desapilar(pila, &elem);
    
    				 printf("\n\t "); system("pause");
    
                     }
    
    				 break;
    
    			case 4:
    
                     clrscr();
    
                     if (vacia(pila))
    
                     {
    
                     printf("\n\t Pila vacia!");
    
                     printf("\n\t "); system("pause");
    
                     }
    
                     else{
    
                     free(pila);
    
    				 printf("\n\t "); system("pause");
    
                     }
    
    				 break;
    
    			case 5:
    
                     clrscr();
    
                     if (vacia(pila))
    
                     {
    
                     printf("\n\t Pila vacia!");
    
                     printf("\n\t "); system("pause");
    
                     }
    
                     else
    
                     {}
    
    				 break;
    
    			case 6:
    
    				fin=EXIT;
    
    				break;
    
    		}
    
    	}
    
    }


    haber si sabeis decirme que hago mal, porque quiero que el programa me haga lo que dice el menu (int menu) pero de momento lo unico que va al 100% es el exit... hehehe

    gracias!



    salu2

    dew

     
     
  2. #2
    Super Moderador Avatar de rob1104

    Fecha de ingreso
    07 mar, 05
    Ubicación
    México
    Mensajes
    2,548
    Cual es el error o errores que te da al compilar??.

    Falta la parte donde ingresas datos de la clave. Tu hiciste el codigo solo?? Realmente esta algo confuso, recomiendo que cambies los clrscr() por system("cls"), por lo demas no entiendo bien que quieres hacer, el tema de pilas y colas en C es algo extenso y complicado de entender, asi que necesitaria las dudas realmente concretas del código.



    Saludos

     
     
  3. #3
    Senior Member

    Fecha de ingreso
    13 jul, 06
    Ubicación
    Elche
    Mensajes
    333
    Cita Iniciado por &#39;rob1104&#39; date=&#39;01 October 2009 - 08:45 PM&#39; timestamp=&#39;1254422724&#39; post=&#39;554890&#39;

    Cual es el error o errores que te da al compilar??.

    Falta la parte donde ingresas datos de la clave. Tu hiciste el codigo solo?? Realmente esta algo confuso, recomiendo que cambies los clrscr() por system("cls"), por lo demas no entiendo bien que quieres hacer, el tema de pilas y colas en C es algo extenso y complicado de entender, asi que necesitaria las dudas realmente concretas del código.



    Saludos
    al compilar no me da error solo cuando eligo una opcion de visualizar o de borrar pues se queda parado y sale el error de windows... lo que quiero hacer es lo que dice el menu mira te paso como lo tengo aora mismo:



    Código:
    #include <stdio.h>
    
    #include <conio.h>
    
    
    
    #define STAY 1 //Quedarse en el programa;
    
    #define EXIT 0 //Dejar el programa;
    
    
    
    struct pila{
    
           int dato;
    
           struct pila *siguiente;
    
           };
    
    
    
    struct pila *tope;
    
    struct pila *nuevo;
    
    struct pila *aux;
    
    
    
    main()
    
    {      
    
          tope=NULL;
    
          int num, fin=0, control;
    
          for (fin=STAY; fin;)
    
          {
    
              
    
              clrscr();
    
              printf("\n\n\t\t\t >------------------------------<");
    
              printf("\n\t\t\t  * Probando Funciones de Pilas *");
    
              printf("\n\t\t\t >------------------------------<");
    
              printf("\n\n\n\t (1) Insertar Elemento");
    
              printf("\n\t (2) Ver tope");
    
              printf("\n\t (3) Eliminar tope");
    
              printf("\n\t (4) Vaciar Pila");
    
              printf("\n\t (5) Visualizar Pila");
    
              printf("\n\t (6) Exit -->");
    
              printf("\n\n\n\t >-----------------<");
    
              printf("\n\n\n\t Elige una opcion:\n ");
    
              printf("\n\t ---> "); scanf("%d",&control);
    
              while (control<0 || control>6);
    
              {
    
                    clrscr();
    
              }
    
              
    
              switch (control)
    
              {
    
                     case 1:
    
                          clrscr();
    
                          nuevo=(struct pila *)malloc(sizeof(struct pila));
    
                          printf("\n\t Introduce numero:");
    
                          printf("\n\t ---> "); scanf("%d", &num);
    
                          printf("\n\n\t %d 1-num", num);
    
                          getchar();
    
                          while ((num) !=0)
    
                          {
    
                                if (nuevo!=NULL)
    
                                {
    
                                                printf("\n\t Ya estoy dentro");
    
                                                nuevo->dato=num;
    
                                                printf("\n\t %d", nuevo->dato);
    
                                                nuevo->siguiente=tope;
    
                                                tope=nuevo;
    
                                                printf("\n\t %d dato", nuevo->dato);
    
                                }
    
                                else
    
                                {
    
                                    printf("\n\t Dato no insertado. No hay memoria suficiente.\n");
    
                                    break;
    
                                }
    
                                nuevo=(struct pila *)malloc(sizeof(struct pila));
    
                                printf("\n\t Introduce numero:");
    
                                printf("\n\t ---> "); scanf("%d", &num);
    
                          }
    
                          clrscr();
    
                          break;
    
                     case 2:
    
                          clrscr();
    
                          if (tope->dato!=NULL)
    
                          {
    
                                               printf("\n\t El tope de la Pila es:");
    
                                               printf("\n\t %d ", tope->dato);
    
                                               getchar();
    
                                               break;
    
                          }
    
                          else
    
                          {
    
                              printf("\n\t La Pila esta vacia!");
    
                              clrscr();
    
                              break;
    
                          }
    
                          break;
    
                     case 3:
    
                          aux=tope;
    
                          tope=aux->siguiente;
    
                          free(aux);
    
                          getchar();
    
                          break;
    
                     case 4:
    
                          clrscr();
    
                          aux=tope;
    
                          if (aux==NULL)
    
                          {
    
                                        printf("\n\t La pila esta vacia!");
    
                                        break;
    
                          }
    
                          printf("\n\t Los numeros que contiene la Pila son:");
    
                          while (aux!=NULL)
    
                          {
    
                                printf(" %d ", aux->dato);
    
                                aux=aux->siguiente;
    
                          }
    
                          getchar();
    
                          system("pause");
    
                          break;
    
                     case 5:
    
                          clrscr();
    
                          aux=tope;
    
                          while (aux!=NULL)
    
                          {
    
                                aux=tope;
    
                                tope=aux->siguiente;
    
                                free(aux);
    
                                aux=tope;
    
                          }
    
                          printf("\n\t La Pila esta vacia!");
    
                          getchar();
    
                          clrscr();
    
                          system("pause");
    
                          break;
    
                     case 6:
    
                          fin=EXIT;
    
                          break;
    
              }
    
          }
    
          free(aux);
    
          free(nuevo);
    
          free(tope);
    
          system("pause");
    
    }


    ahora en vez de funciones pues lo meto todo en los case asi no tengo tanta funcion rara por ahi...

    por cierto no te voy a pedir derechos de autor si quieres compilar el trozo de codigo.. hehe que lo pongo para eso para que lo compileis haber que tal os va, porque yo uso el Dev-C++ v4.9...

    gracias

     
     
  4. #4
    Super Moderador Avatar de rob1104

    Fecha de ingreso
    07 mar, 05
    Ubicación
    México
    Mensajes
    2,548
    Siempre que fin tuvo el problema Gab1???



    Por mas que busqué no encontré el error, definitvamente pilas y colas en C no es lo mio



    Saludos

     
     

Temas similares

  1. Ejercicios
    Por kevien_Fox en el foro Programación
    Respuestas: 9
    Último mensaje: 20/08/2009, 14:58
  2. Ejercicios
    Por rob1104 en el foro Programación
    Respuestas: 22
    Último mensaje: 06/03/2009, 02:46
  3. Ejercicios
    Por rob1104 en el foro Programación
    Respuestas: 8
    Último mensaje: 08/09/2006, 20:01
  4. Ejercicios
    Por rob1104 en el foro Programación
    Respuestas: 45
    Último mensaje: 28/08/2006, 23:12
  5. Ejercicios
    Por RadicalEd en el foro Programación
    Respuestas: 12
    Último mensaje: 02/10/2005, 05:36

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •