viernes, 20 de enero de 2012

Lista_examen_codigo

#include<stdio.h>
#include<conio.h>
#include <windows.h>
#include <stdlib.h>
struct lista {
int data;
struct lista * sig;
};
typedef struct lista lista;
        lista * principio,*final,*actual;
        lista * getlista();
void enlista_inicio(int x);
void enlista_final(int x);
void enlista_medio(int n_no,int x);
int borrar_lista(int kv);
void ordenar();
void desplegar();
int contar();
main()
      {
            int ch,n,n_no;
            principio = NULL;
       do
         {
          system ("cls") ;
          printf("\a\nINFORMATICA II\n");
          printf("\n-----Operaciones con listas-----\n");
          printf("\n1.  Insertar un valor al principio de la lista");
          printf("\n2.  Desplegar la lista");
          printf("\n3.  Insertar un valor al final de la lista");
          printf("\n4.  Insertar un valor despues de un nodo especifico");
          printf("\n5.  Borrar un nodo de la lista");
          printf("\n6.  Ordenar la lista\n");
          printf("\n-----Creditos-----");
          printf("\n\n7.  Autores del Programa");
          printf("\n8.  Salir");
          printf("\n\n  Elige una opcion: ");
          scanf("%d",&ch);
          switch (ch)
                     {
                      case 1:
                       printf("\nIngresa el valor a insertar al principio: ");
                        scanf("%d",&n);
                         enlista_inicio(n);
                          break;
                        case 2:
                        desplegar();
                        break;
                        case 3:
                        printf("\nIngresa el valor a insertar al final: ");
                        scanf("%d",&n);
                        enlista_final(n);
                        break;
                        case 4:
                       
                        printf("\nIngresa el numero de nodo despues del cual quieres insertar un valor: ");
                                  scanf("%d",&n_no);
                                   if ( n_no > contar() )
                                    {
                                     printf("\nNo existen %d nodo(s). Solo hay %d nodo(s) en la lista"
                                               "\n\nPresione Enter para continuar...",n_no,contar());
                                              getch();
                                               }
                                                else
                                                 {
                                                  printf("\nIngresa el valor a colocar despues del nodo %d: ",n_no);
                                                   scanf("%d",&n);
                                                    enlista_medio(n_no,n);
                                                     }
                                                      break;
                         case 5:
                        
                         printf("\nIngresa el valor a borrar: ");
                         scanf("%d",&n);
                         borrar_lista(n);
                         break;
                        
                         case 6:
                             
                         ordenar();
                         break;
      
       case 7:
                         system("cls");
                         printf("\n -----------------------------------"
                         "\n|Autores:                           |\n\n"
                         "|-----------------------------------|"
                         "\n|Arango Robles Eleazar              |"
                         "\n|Godoy Saavedra Eduardo             |"
                         "\n|Mobarak Elnecave Antonio           |"
                         "\n|Perez Vazquez Christian Maria Jose |"
                         "\n ------------------------------------"
                         "\n\nCopyright, UNAM. Todos los Derechos Reservados"
                         "\n\nNo apoyamos a la SOPA"
                         "\n\nPresiona Enter para regresar...");
                         getch();
                         break;
                         }
       }
      while (ch!=8);
       }                        
void ordenar() //Ordena la lista
{
int temp;
actual = final = principio;
if (principio==NULL)
{
printf("\nLista vacia, Presione Enter para continuar...");
getch();
}
else
{
for (actual=principio;(actual != NULL);actual=actual->sig)
  {
    for (final=actual->sig;(final != NULL);final=final->sig)
    {
      if ( actual->data < final->data )
      {
 temp = final->data;
 final->data = actual->data;
 actual->data = temp;
        }
          }
     }
printf("\nLa lista esta ordenada, Presione Enter para continuar...");
getch();
}
}
int borrar_lista(int kv) //Borra un elemento de la lista
{
int borrar;
actual = principio;
if (principio == NULL)
{
printf("\a\nLista vacia, Presione Enter para continuar...");
getch();
}
else
{
while ( (actual != NULL) && (actual->data != kv) )
{
final = actual;
actual = actual->sig;
}
if (actual->data == kv)
{
if (actual == principio)
{
  borrar = actual->data;
  actual = actual->sig;
  free(principio);
  principio = actual;
}
else
{
  borrar = actual->data;
  final->sig = actual->sig;
  free(actual);
}
  printf("\nEl valor %d se ha borrado, Presione Enter para continuar...",kv);
  getch();
  return(borrar);
}
else
  printf("\nEl valor %d no existe, Presione Enter para continuar...",kv);
  getch();
}
return(1);
}
void enlista_medio(int n_no,int x) // Agrega un elemento en la parte media de la lista
{
int ct=0;
lista *temp;
temp = getlista();
temp->data = x;
temp->sig = NULL;
actual = principio;
while (ct < n_no )
{
final = actual;
actual = actual->sig;
ct++;
}
if (principio == NULL) principio = temp;
else if (actual == principio)
{
temp->sig = actual;
principio = temp;
}
else
{
temp->sig = final->sig;
final->sig = temp;
}
}
lista * getlista()
{
lista * temp;
temp = (lista *) malloc(sizeof(lista));
if (temp == NULL)
{
printf("\nFalla en la asignacion de memoria, Presione Enter para continuar...");
exit(1);
}
else
return(temp);
}
int contar()
{
int ct=0;
actual = principio;
while (actual != NULL)
{
ct++;
actual = actual->sig;
}
return(ct);
}
void enlista_inicio(int x) // Agrega un elemento en la parte inicial de la lista
{
lista *temp;
temp = getlista();
temp->data = x;
temp->sig = NULL;
if (principio == NULL)
principio = temp;
else
{
temp->sig = principio;
principio = temp;
}
}
void enlista_final(int x) // Agrega un elemento en la parte final de la lista
{
lista *temp;
temp = getlista();
temp->data = x;
temp->sig = NULL;
if (principio == NULL)
principio = temp;
else
{
actual = principio;
while (actual != NULL)
{
final = actual;
actual = actual->sig;
}
final->sig = temp;
}
}
void desplegar() //Muestra la lista
{
actual = principio;
if (actual == NULL)
printf("\a\nLa lista esta vacia, Presione Enter para continuar...");
while (actual != NULL)
{
printf("\n     %d",actual->data);
actual = actual->sig;
}
getch();
}

viernes, 13 de enero de 2012

ejercicio_cola_pantallas



Ejercicio_Cola_Codigo

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
struct colanodo {
  char nombre;
  struct colanodo *sig;
  };
typedef struct colanodo COLA;
typedef COLA *COLAPTR;
void enqueue (COLAPTR *, COLAPTR *, char);
int nohaycola (COLAPTR);
void escribecola (COLAPTR);
void menu(void);
void imprimecola (COLAPTR);
void enqueue (COLAPTR *, COLAPTR *, char);
char dequeue(COLAPTR *);
main ()
  {
  COLAPTR principio=NULL, final=NULL;
  int opcion;
  char item;
 
  menu();
  printf("\n\n Elige una opcion: ");
  fflush(stdin);
        scanf  ("%d", &opcion);
  while (opcion!=4)
  {
   switch (opcion)
   { case 1: printf  ("\n Ingresar el caracter del nodo: ");
       fflush(stdin);
                      scanf   ("%c", &item);
       enqueue (&principio, &final, item);
       escribecola (principio);
       printf("\n\n                Enter para regresar...");
                      getch();
                      menu();
             printf ("\n\n Elige una opcion :");
                      scanf  ("%d", &opcion);
                      break;
     case 2: printf ("\n\n Eliminar un elemento de la cola");
             fflush(stdin);
             dequeue (&principio);
              case 3: printf ("\n\n La cola es: ");
             fflush(stdin);
       imprimecola (principio);
       printf("\n\n                Enter para regresar...");
                      getch();
                      menu();
             printf ("\n\n Elige una opcion :");
                      scanf  ("%d", &opcion);
       break;
     default:printf ("\n\nOpcion NO valida");
             printf ("\n\nEnter para continuar");
              getch();
     system ("cls");
              menu();
             printf ("\n\n Elige una opcion :");
                      fflush(stdin);
                      scanf  ("%d", &opcion);
   }
         }
         }  
void menu(void) {
     system("cls");
     printf("\n\n Operaciones disponibles con la Cola");
     printf("\n\n 1.- Agregar un elemento a la cola");
     printf("\n\n 2.- Eliminar un elemento de la cola");
     printf("\n\n 3.- Imprime la cola");
     printf("\n\n 4.- Fin");
     };

void enqueue (COLAPTR *adela, COLAPTR *atras, char valor)
     {
             COLAPTR aux=(COLAPTR)malloc(sizeof(COLA));
    aux->sig=NULL;
    aux->nombre=valor;
   
             if (nohaycola(*adela))
    {*adela=aux;
        *atras=aux;}
              else
     {
      (*atras)->sig=aux;
       *atras=aux;
     }
  }   
int nohaycola (COLAPTR aux)
 {
  return aux==NULL;
 }
void escribecola (COLAPTR aux)
     {
    if (nohaycola(aux))
  printf("\n\nNo hay cola");
  else { printf ("\n\n La cola tiene... ");
      printf ("\n Principio --> ");
      while (aux!=NULL)
      {printf("%c <-- ", aux->nombre);
      aux=aux->sig;
      }
      printf("Final de la cola");
    }
     }
    
void imprimecola (COLAPTR aux)
     {
    if (nohaycola(aux))
  printf("   No hay cola");
  else { printf ("\n Principio --> ");
      while (aux!=NULL)
      {printf("%c <-- ", aux->nombre);
      aux=aux->sig;
      }
             printf("Final de la cola");
             }
     }
    
char dequeue(COLAPTR *adela)
{
   COLAPTR aux; char sale;
            aux=*adela;
            sale=aux->nombre;
            *adela=aux->sig;
            free(aux);
    return (sale);
 }

miércoles, 11 de enero de 2012

ejercicio_pila_codigo

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
struct pilanodo {
   int dato;
   struct pilanodo *sig;
       };
 typedef struct pilanodo PILA;
 typedef PILA *PILAPTR;

 void menu(void);
    void push(PILAPTR *, int);
    int pop(PILAPTR *);
 int vacia (PILAPTR);
    void imprime (PILAPTR);
        
main()
{  PILAPTR pilaptr = NULL;
   int opcion;
   int valor;
   menu();
   printf ("\n\n Selecciona una de las siguientes opciones:");
   scanf  ("%d", &opcion);
     while (opcion!= 4)
                {switch (opcion)
                     {case 1: printf ("\n\n Dame el valor del elemento a guardar: ");
                              scanf  ("%d", &valor);
                              push   (&pilaptr, valor);
                              menu();
                              printf ("\n\n Elige una opcion :");
                              scanf  ("%d", &opcion);
                              break;
       case 2: if(!vacia(pilaptr))
               printf("\n\n El valor extraido de la pila es %d", pop(&pilaptr));
                      case 3: imprime(pilaptr);
               menu();
               printf ("\n\n Elige una opcion :");
                              scanf  ("%d", &opcion);
                              
                              break;
                    default : printf("\n\n      Ingresaste un numero no valido\n\n");
                              printf("\n\n   || Por favor reinicie el programa ||\n\n");
               getch();
                      }
                    
                  }
               }
              
 void menu(void) {
     system("cls");
     printf("\n\n Operaciones disponibles con la Pila");
     printf("\n\n 1.- Agregar un elemento a la pila");
     printf("\n\n 2.- Eliminar un elemento a la pila");
     printf("\n\n 3.- Recorrer la pila");
     printf("\n\n 4.- Fin");
     };
 void push(PILAPTR *aux, int valor)
              {PILAPTR aux1;
               aux1=((PILAPTR)malloc(sizeof (PILA)));
                if(aux1!=NULL)
                  { aux1->dato = valor;
                    aux1->sig = NULL;
                             
                    if(*aux==NULL)
                       *aux=aux1;
                  else{ aux1->sig = *aux;
                       *aux = aux1;
                      }
                  }
                else printf ("\n\n No se creo el nodo por que no hay memoria suficiente");
      }    
  int pop(PILAPTR *aux)
  { PILAPTR aux1; int sale;
    aux1 = *aux;
    *aux =  aux1 -> sig;
    sale = aux1->dato;
    free(aux1);
    return (sale);
  }
 int vacia(PILAPTR aux){
  return aux==NULL;
}

void imprime(PILAPTR aux)
{ if (aux == NULL)
     printf("\n           || La pila esta vacia || \n\n");
  else
     { printf("\n                La pila  es: \n\n");
       printf("\n\n                   Tope");
       while (aux != NULL)
      { printf("\n                        %4d", aux->dato);
        aux = aux->sig;
      }
       printf("\n                    Fondo\n\n");
     }
  printf("\n\n                Enter para regresar...");
  getch();
}

Ejercicio_Pila_imagenes.