martes, 24 de enero de 2012

arbol

#include <stdlib.h>
#include <stdio.h>
struct arbol{
       struct arbol *izq;
       int dato;
       struct arbol *der;
       };// se declara la estructura albol
typedef struct arbol ARBOL; // se le da un pseudonimo
typedef ARBOL *ARBOLPTR;
void imprimir(ARBOLPTR); // se declaran aplicaciones
void insertar(ARBOLPTR *, int);
void menu(void);
main() // se declara la funcion main
{
   
ARBOLPTR raiz = NULL;
  int opcion, item;
  menu();
  printf("\n Elige opcion: \n");
  scanf("%d",&opcion);
  while (opcion != 4){ // se declara el ciclo para repetir menu
 switch(opcion)
 { case 1:   printf("\n Ingresa el valor : \n");
      scanf("%d", &item);
      if (encontrarArbol(raiz, item) == 1)
         { printf("\n El numero: %d,ya fue ingresado");
    printf("\n  ");
    printf("\n\n Presiona enter  para continuar");
    getch();
             }
      else insertar(&raiz, item);
      break;
   case 2: if (raiz == NULL)
   { printf("\nEsta vacio ingresa un numero primero");
   }                    
   else imprimir(raiz);
      printf("\n\nEnter para continuar\n");
      getch();
      break;
       case 3: printf("Digite el elemento a buscar: \n");
       scanf ("%d", &item);
       if (encontrarArbol(raiz, item) == 0)
       printf("no se encuentra el valor\n");
       else
       printf ("El valor %d esta en el nivel:",item);
      imprimir (raiz);
       getch();
       break;
   
   default : printf("opcion invalida \n\n");
      getch();
      menu();
 }
 menu();
printf("\nElige opcion: ");
scanf("%d",&opcion);
}
     getch();
}
void menu(void)
     { system("cls");
       printf("\n\t" " *******OPERACIONES DISPONIBLES EN EL ARBOL*****\n\n\n"
       " 1 INSERTA UN ELEMENTO\n"
       " 2 IMPRIMIR EL ARBOL\n"
       " 3 BUSQUEDA \n"
       " 4 SALIR DEL PROGRAMA\n");
     }
int encontrarArbol(ARBOLPTR aux, int valor)//esta funcion permita buscar
{ while (aux != NULL)                     //un numero en la lista
 { if (valor < aux->dato)
      { aux = aux->izq;
        continue;}// vuelve entrar a while mientars aux sea diferente de uno
   if (valor > aux->dato)
      { aux = aux->der;
        continue;}
   if (valor == aux->dato)
      return 1;
 }
return 0;
}
void insertar(ARBOLPTR *raiz, int valor)
{ ARBOLPTR aux1, aux2, aux3=   NULL;
  aux1 = (ARBOLPTR) malloc(sizeof(ARBOL));//busca un area de memoria que tenga la estructura de arbol
  if (aux1 != NULL)
     {aux1->dato = valor;//asigna el valor
      aux1->izq = NULL;// asigna nulo
      aux1->der = NULL;// asigna nulo
      aux2 = *raiz;//  se le va asignar el valor de la variable que esta apuntada por raiz
      while (aux2 != NULL)
      {aux3 = aux2;
       if (valor < aux2->dato)// si es menor se va por el else
      
    aux2 = aux2->izq;
       else
    aux2 = aux2->der;// se le asigna al propio aux2
      }
      if (aux3 == NULL)// no es nulo se va por raiz
   *raiz = aux1;
      else
  {if (valor < aux3->dato)
       aux3->izq = aux1;
   else
       aux3->der = aux1;
  }
     }
   
}
void imprimir(ARBOLPTR aux1)
{ ARBOLPTR aux2;
  if (aux1 != NULL) // si el apuntador aux1 es diferente a nulo va imprimir el caracter asiganado
     {printf("\n\n raiz= %d", aux1->dato);
      aux2= aux1->izq;
      if (aux2 != NULL)
   printf("\tizquierdo: %d", aux2->dato);
      else printf("\tizquierdo NULO");
      imprimir(aux2);
      aux2= aux1->der;
      if (aux2 != NULL)
   printf("\tderecho: %d", aux2->dato);
      else printf("\tderecho NULO");
      imprimir(aux2);
     }
}



programa estructura de arbol

#include <stdlib.h>
#include <stdio.h>
struct arbol{
       struct arbol *izq;
       int dato;
       struct arbol *der;
       };// se declara la estructura albol
typedef struct arbol ARBOL; // se le da un pseudonimo
typedef ARBOL *ARBOLPTR;
void imprimir(ARBOLPTR); // se declaran aplicaciones
void insertar(ARBOLPTR *, int);
void menu(void);
main() // se declara la funcion main
{ ARBOLPTR raiz = NULL;
  int opcion, item;
  menu();
  printf("\n elige opcion: \n");
  scanf("%d",&opcion);
  while (opcion != 3){ // se declara el ciclo para repetir menu
 switch(opcion)
 { case 1:   printf("\n Ingresa el valor : \n");
      scanf("%d", &item);
      if (encontrarArbol(raiz, item) == 1)
         { printf("\n El numero: %d,ya fue ingresado");
    printf("\n  ");
    printf("\n\n Presiona enter  para continuar");
    getch();
             }
      else insertar(&raiz, item);
      break;
   case 2: if (raiz == NULL)
   { printf("\nEsta vacio ingresa un numero primero");
   }                    
   else imprimir(raiz);
      printf("\n\nEnter para continuar\n");
      getch();
      break;
      
   default : printf("opcion invalida \n\n");
      getch();
      menu();
 }
 menu();
printf("\nElige opcion: ");
scanf("%d",&opcion);
}
     getch();
}
void menu(void)
     { system("cls");
       printf("\n\n" " *******OPERACIONES DISPONIBLES EN EL ARBOL*****\n"
       " 1 INSERTA UN ELEMENTO\n"
       " 2 IMPRIMIR EL ARBOL\n"
       " 3 SALIR DEL PROGRAMA\n");
     }
int encontrarArbol(ARBOLPTR aux, int valor)//esta funcion permita buscar
{ while (aux != NULL)                     //un numero en la lista
 { if (valor < aux->dato)
      { aux = aux->izq;
        continue;}// vuelve entrar a while mientars aux sea diferente de uno
   if (valor > aux->dato)
      { aux = aux->der;
        continue;}
   if (valor == aux->dato)
      return 1;
 }
return 0;
}
void insertar(ARBOLPTR *raiz, int valor)
{ ARBOLPTR aux1, aux2, aux3=   NULL;
  aux1 = (ARBOLPTR) malloc(sizeof(ARBOL));//busca un area de memoria que tenga la estructura de arbol
  if (aux1 != NULL)
     {aux1->dato = valor;//asigna el valor
      aux1->izq = NULL;// asigna nulo
      aux1->der = NULL;// asigna nulo
      aux2 = *raiz;//  se le va asignar el valor de la variable que esta apuntada por raiz
      while (aux2 != NULL)
      {aux3 = aux2;
       if (valor < aux2->dato)// si es menor se va por el else
      
    aux2 = aux2->izq;
       else
    aux2 = aux2->der;// se le asigna al propio aux2
      }
      if (aux3 == NULL)// no es nulo se va por raiz
   *raiz = aux1;
      else
  {if (valor < aux3->dato)
       aux3->izq = aux1;
   else
       aux3->der = aux1;
  }
     }
   
}

void imprimir(ARBOLPTR aux1)
{ ARBOLPTR aux2;
  if (aux1 != NULL) // si el apuntador aux1 es diferente a nulo va imprimir el caracter asiganado
     {printf("\n\n raiz= %d", aux1->dato);
      aux2= aux1->izq;
      if (aux2 != NULL)
   printf("\tizquierdo: %d", aux2->dato);
      else printf("\tizquierdo NULO");
      imprimir(aux2);
      aux2= aux1->der;
      if (aux2 != NULL)
   printf("\tderecho: %d", aux2->dato);
      else printf("\tderecho NULO");
      imprimir(aux2);
     }
}


lunes, 23 de enero de 2012

FUNCIÓN RECURSIVA Santiago Diaz Krysther Israel

/*Santiago Diaz Krysther Israel*/
/*INFORMÁTICA II - INTERSEMESTRAL*/

#include<stdio.h>/*Declaracion de bibliotecas*/
#include<stdlib.h>

long fact(long);/*Prototipo de la función, se usa long como tipo de dato para mayor rango de valores aceptados*/

main()/*Inicio del programa*/
{
               int num;/*Declaración de variables*/
               printf("\n\nDame un numero mayor a 1: ");/*Pedimos un numero al usuario*/
               scanf("%d", &num);/*el numero se toma del teclado y se almacena en num*/
               system("cls");/*Se limpia la pantalla*/
               printf("\n\n\n\tEl factorial del numero %d! es: %d", num, fact(num));/*se imprime el resultado*/
               getch();
}

long fact(long n)/*Definición de la función fact*/
{
     if(n <= 1)/*si el valor introducido es 1 se regresa un uno a la pantalla*/
         return 1;
     else/*cualquier otro valor diferente de 1 entrara en la funcion que se llamara asi mis misma hasta que sea 1*/
         return(n * fact(n - 1));
}
   

programa factorial (Erick David avalos vite)

/*
  Name: factroial intersemestral fca
  Copyright:
  Author: Erick David avalos
  Date: 23/01/12 20:53
  Description: este programa realiza el factorial de numeros enteros
*/

#include <stdio.h>
#include <stdlib.h>
int factorial(int num);// se declara la funcion factorial
int main(){
int num;
system("cls");
printf("Ingresa un entero \n");// se ingresa un numero de tipo entero
scanf("%d",&num);   
printf("El fatorial es: %d\n",  factorial(num)); 
getch();
}
int factorial(int num){ // funcion recursiva
if (num<2)
return 1;// si el numero ingresdo es mayor a 2 se regresa 1
else
return num * factorial(num-1); }/* de caso contrario  se multiplica el numero por
 la funcion factorial y se le restara 1*/