SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
FORMATO DE DESARROLLO DEL PROYECTO DE APLICACIÓN




Curso: Matemática Discreta


Clase:


             ORDENAMIENTO DE RUTAS TURÍSTICAS APLICANDO LA
Título del proyecto:
TEORÍA DE ÁRBOLES BINARIOS

Nº de equipo de Trabajo:


Integrantes:

Chalán Malca, Junior.
Iparraguirre Ruiz, Max.
Urteaga Vásquez, Jhon.




Fecha de sustentación: Semana 15




    Facultad de Ingeniería y Arquitectura                         Semestre 2011-II
    Carrera de Ingeniería de Sistemas                             Fecha: 22/08/2011
1. TEMA DEL PROYECTO:


Proponer distintas rutas para la empresa de turismo Terralan utilizando la teoría de
ordenamiento de árboles binarios.




        2. PLANTEAMIENTO DEL PROBLEMA:


La empresa “Terralan” llega a Cajamarca para brindar el servicio de turismo. Terralan quiere
ofrecer distintas rutas que permitan llegar a todos los lugares turísticos con el mismo costo;
para solucionar el problema Terralan está solicitando un ingeniero de sistemas para obtener
una solución.




        3. OBJETIVO:

-Hacer un programa que indique las distintas rutas que permitan llegar a todos los lugares
turísticos.




        4. MODELO MATEMÁTICO:

Vértice:
También llamado nodo unidad fundamental de la que están formados los grafos.
Aristas:
Son las uniones entre vértices.
Grafo:
Es una figura formada por vértices y aristas.

    Facultad de Ingeniería y Arquitectura                                  Semestre 2011-II
    Carrera de Ingeniería de Sistemas                                      Fecha: 22/08/2011
Árbol:
Un árbol es un grafo.
Subárbol:
Árbol binario:
Es un árbol en el que ningún nodo puede tener más de dos subárboles. En un árbol binario cada
nodo puede tener cero, uno o dos hijos (subárboles). Se conoce el nodo de la izquierda como
hijo izquierdo y el nodo de la derecha como hijo derecho.




         5. MÉTODOS DE SOLUCIÓN
Para obtener distintas rutas que permitan llegar a todos los destinos turísticos se hace uso de
los recorridos sobre árboles binarios:
-Recorrido en preorden:
En éste tipo de recorrido se sigue el orden: nodo raíz, subárbol izquierdo y subárbol derecho.
-Recorrido en postorden:
En este caso el recorrido sigue el orden: subárbol izquierdo, nodo raíz y subárbol derecho.
-Recorrido en inorden:
En este caso el recorrido sigue el orden: Subárbol izquierdo, subárbol derecho y nodo raíz.




        6. ALGORITMO COMPUTACIONAL:

#include <iostream>

#include <stdlib.h>

#include <conio.h>

#include <dos.h>

#include <math.h>

int nodo; /*Indicador de niveles que va tener nuestro arbol*/




    Facultad de Ingeniería y Arquitectura                                   Semestre 2011-II
    Carrera de Ingeniería de Sistemas                                       Fecha: 22/08/2011
/*A consecuencia del gotoxy, nuestro programa solo admite 5 niveles*/



/*Estructura llamada arbol*/

struct arbol{

    int grado;/*grado del arbol, por defecto comienza en uno*/

    char inf; /*valor que se captura por pantalla*/

    struct arbol *i,*d; /*Referencia a los nodos izquierdo y derecho*/

}*cab,*cola,*p,*q;/*Instancias de la estructura arbol*/

int opciones();/*Muestra llenar arbol o salir del arbol*/

void upn(); /*Logo de la upn*/

void principal();/*Muestra los integrantes*/

int op ; /*Varible para salir o llenar arbol*/

void iniciar();/*Procedimiento donde se indica niveles del arbol*/

void llenar_arbol(arbol *cola, int x, int y);/*Se capturan los valores de los nodos*/

void pre_ord(arbol *cab);/*Se ordena el arbol en pre-orden*/

void in_ord(arbol *cab);/*Se ordena el arbol en in-orden*/

void post_ord(arbol *cab);/*Se ordena el arbol en post-orden*/

void dib_cuadro(int ax,int ay,int bx,int by); /*Se dibuja el rectangulo que delimita al nodo*/



int main() {

   principal();



     Facultad de Ingeniería y Arquitectura                                        Semestre 2011-II
     Carrera de Ingeniería de Sistemas                                            Fecha: 22/08/2011
do{

clrscr();

op= opciones();

clrscr();

switch(op){

   case 1:iniciar(); break;

   case 2:exit(1);}

      textcolor(14);

      gotoxy(1,17);

cprintf( "RECORRIDO DE LOS ELEMENTOS PRE-ORDENn" );

      textcolor(14);

gotoxy(1,18);

      pre_ord(cab);

      cprintf("n");

      textcolor(14);

gotoxy(1,21);

cprintf( "RECORRIDO DE LOS ELEMENTOS IN-ORDENn" );

      textcolor(14);

gotoxy(1,22);

      in_ord(cab);

      cprintf("n");



 Facultad de Ingeniería y Arquitectura                 Semestre 2011-II
 Carrera de Ingeniería de Sistemas                     Fecha: 22/08/2011
textcolor(14);

     gotoxy(1,26);

     cprintf( "RECORRIDO DE LOS ELEMENTOS POST-ORDENn" );

         textcolor(15);

     gotoxy(1,27);

         post_ord(cab);

         cprintf("n");

         gotoxy(1,30);

         system ("PAUSE");

     system("CLS");

     } while(op<2);

         return 0;

}

void principal(){

      upn();

      gotoxy(25,5);

    textcolor(4);//color rojo

    cprintf( "UNIVERSIDAD PRIVADA DEL NORTEn" );

      gotoxy(24,7);

      gotoxy(5,17);cprintf( " INTEGRANTESn" );

    textcolor(18);//color verde



       Facultad de Ingeniería y Arquitectura                 Semestre 2011-II
       Carrera de Ingeniería de Sistemas                     Fecha: 22/08/2011
gotoxy(5,18);cprintf( " Chalan Malca,Juniorn" );

    gotoxy(5,19);cprintf( " Iparraguirre ruiz,Darwinn" );

    gotoxy(5,20);cprintf( " Urteaga Vasquez,Jhonn" );

    gotoxy(5,21);cprintf( " =========================n" );

    textcolor(4);

      getch();



}

int opciones() {

      int op;

      textcolor(18);

      gotoxy(25,7); cprintf( " ARBOLES BINARIOS " );

    textcolor(15);

      gotoxy(30,10); cprintf( " OPCIONES " );

      textcolor(14);

      gotoxy(25,14); cprintf( " <1> " );

      textcolor (15); cprintf( " LLENAR ARBOL " );

      textcolor(14);

      gotoxy(25,16); cprintf( " <2> " );

      textcolor (15); cprintf( " SALIR " );

      gotoxy(25,20); cprintf( " Digite su opcion: " );



       Facultad de Ingeniería y Arquitectura                  Semestre 2011-II
       Carrera de Ingeniería de Sistemas                      Fecha: 22/08/2011
gotoxy(45,20);

    cin>> op ;

    return op;

}

void upn(){

    textcolor(15); //Color blanco

    gotoxy(15,10);cprintf("      *// *// * * * * * *-     *- -n");

    gotoxy(15,11);cprintf("      *// *// *//    * * *- *- -n");

    gotoxy(15,12);cprintf("     *// *// *//    * * *- *- -n");

    gotoxy(15,13);cprintf("     *// *// * * * * *     *-*- -n");

    gotoxy(15,14);cprintf(" *// *// *//         *    *- -n");

    gotoxy(15,15);cprintf(" * * * *// *//       *     * -n");

}



void iniciar(){

    int x=40,y=1;

    textcolor(GREEN);

    gotoxy(0,2);cprintf("Ingrese niveles del arbol: ");

    textcolor(15);

    cin>>nodo;

    system("CLS");



     Facultad de Ingeniería y Arquitectura                            Semestre 2011-II
     Carrera de Ingeniería de Sistemas                                Fecha: 22/08/2011
textcolor(7);

      cab = new(arbol); /*cab es un nuevo arbol*/

      cab->i = NULL;/*Nodo izquierdo en principio nulo*/

      cab->d = NULL;/*Nodo derecho en principio nulo*/

      cab->grado=1; /*Se otorga grado uno*/

      cola=cab; /*cab se comvierte en cola*/

      llenar_arbol(cola,x,y);/*se llama al procedimiento llenar arbol*/

}

void llenar_arbol(arbol *cola,int x, int y){

      int z;

    dib_cuadro(x,x+3,y,y+2);/*Se le pasa como parametro x and y.Ademas se les suma unos
centimetros

    mas para que se dibuje al contorno de el valor del nodo*/

      gotoxy(x+1,y+1);

      textcolor(14);

      cin>>cola->inf;/*Se captura el valor que es introducido por pantalla, se le denomina inf*/

    z=x+pow(2,nodo-(cola->grado));            /*z es igual a x + potenciacionde 2 a la (nodo menos
grado)*/

      x=x-pow(2,nodo-(cola->grado));

      y=y+3;

      if(cola->grado < nodo){ /*Si grado es menor que los niveles introducidos por pantalla: */

         p = new(arbol); /*Se crea un nuevo arbol*/



      Facultad de Ingeniería y Arquitectura                                      Semestre 2011-II
      Carrera de Ingeniería de Sistemas                                          Fecha: 22/08/2011
p->i = NULL; /*Se inicia con nodo izquierdo nulo*/

           p->d = NULL; /*Se inica con nodo derecho nulo*/

      p->grado=cola->grado+1;/*se le suma uno al grado y ese nuevo grado se le asigna a p
grado*/

           cola->i = p;/*instancia cola con el atrivuto nodo izquierdo se le asigna a p*/

      llenar_arbol(p,x,y); /*Se llama nuevamente al procedimiento llenar arbol con nuevos
parametros*/

           q = new(arbol);

           q->i = NULL;

           q->d = NULL;

           q->grado=cola->grado+1;

           cola->d = q;

           llenar_arbol(q,z,y);

       }

}

/*Primero se procesa la raiz, luego de izquierda a derecha sus

    ramas incluyendo sus ojas*/

/*Primero procesamos el nodo actual,depues el subarbol inzquierdo

y finalmente el subarbol derecho */

void pre_ord(arbol *cab){

       if(cab){

           cout<<cab->inf<<" "; /*Aplica la funcion al dato del nodo actual*/



       Facultad de Ingeniería y Arquitectura                                         Semestre 2011-II
       Carrera de Ingeniería de Sistemas                                             Fecha: 22/08/2011
pre_ord(cab->i);    /*subarbol izquierdo*/

           pre_ord(cab->d);     /*Subarbol derecho*/



    }

}



/*Primero procesamos el subarbol izquierdo,despues el nodo actual,

        y finalemnte el subarbol derecho*/

void in_ord(arbol *cab){

        if (cab){

           in_ord(cab->i);/*Subarbol izquierdo*/

           cout<<cab->inf<<" ";/*Aplica la funcion al dato del nodo actual*/

           in_ord(cab->d);/*Sub arbol derecho*/

    }

}



/*Primero procesamos el subarbol izquierdo,despues el subarbol derecho

        y finalmente el nodo actual*/

void post_ord(arbol *cab) {

        if (cab) {

           post_ord(cab->i);/*Subarbol izquierdo*/



        Facultad de Ingeniería y Arquitectura                                  Semestre 2011-II
        Carrera de Ingeniería de Sistemas                                      Fecha: 22/08/2011
post_ord(cab->d);/*Sub arbol derecho*/

          cout<<cab->inf<<" ";/*Aplica la funcion al dato del nodo actual*/

    }

}

void dib_cuadro(int ax,int ay,int bx, int by){

        textcolor(12);/*Color rojo*/

        int a;/*Varible entera que nos va ha servir como iterador para dibujar las lineas*/

        for (a=ax;a<=ay;a++) {

          gotoxy (a,bx);

          cout<<(char(196)); /*Linea horizontal*/

          gotoxy (a,by);      /*Posicionamiento de la linea*/

          cout<<(char(196)); }

        for (a=bx;a<=by;a++){

          gotoxy (ax,a);

          cout<<(char(179));      /*Linea vertical*/

          gotoxy (ay,a);

          cout<<(char(179));}

        gotoxy (ax,bx);

        cout<<(char(218));               /*esquina superior izquierda*/

        gotoxy (ax,by);

        cout<<(char(192));               /*esquina inferior izquierda*/



        Facultad de Ingeniería y Arquitectura                                       Semestre 2011-II
        Carrera de Ingeniería de Sistemas                                           Fecha: 22/08/2011
gotoxy (ay,bx);

    cout<<(char(191));               /* esquina superior derecha*/

    gotoxy (ay,by);

    cout<<(char(217));               /* esquina inferior derecha*/

}




        7. RESULTADOS:




        8. CONCLUSIONES:




        9. REFERENCIAS BIBLIOGRÁFICAS:


    Facultad de Ingeniería y Arquitectura                            Semestre 2011-II
    Carrera de Ingeniería de Sistemas                                Fecha: 22/08/2011
10. CRONOGRAMA DE ACTIVIDADES (Las actividades se enumeran en la primera
        columna. Se señalará con una X la semana de culminación de cada actividad).

ACTIVIDADES

                  Mes/semanas    Ago   Set.    Oct.          Nov.          Dic.
Actividades                      0 1 2 3 4 5 6 7 8 9 10     11 12   13   14 15
Tema del Proyecto                       x
Recopilación de información                 x
Planteamiento del problema                      x
Objetivos                                       x
Modelo matemático                                   x
Métodos de solución                                     x
Algoritmo computacional                                        x
Resultados                                                               x
Conclusiones                                                             x
Sustentación                                                                 x




Facultad de Ingeniería y Arquitectura                               Semestre 2011-II
Carrera de Ingeniería de Sistemas                                   Fecha: 22/08/2011

Más contenido relacionado

La actualidad más candente

Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++ Ronal Palomino
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datosUVM
 
Problemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bProblemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bFRESH221 C.R
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Eduard Tomàs
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadoresUVM
 
Elementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivelElementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivelRicardo Axel
 
Previo8- Dispos E/S
Previo8- Dispos E/SPrevio8- Dispos E/S
Previo8- Dispos E/SBertha Vega
 

La actualidad más candente (13)

Algoritmos - Funciones C++
Algoritmos - Funciones C++ Algoritmos - Funciones C++
Algoritmos - Funciones C++
 
Resolución práctica de tipos de datos
Resolución práctica de tipos de datosResolución práctica de tipos de datos
Resolución práctica de tipos de datos
 
Problemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2bProblemas+resueltos+de+c$2 b$2b
Problemas+resueltos+de+c$2 b$2b
 
Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++Codemotion 2015 - Bienvenido de nuevo c++
Codemotion 2015 - Bienvenido de nuevo c++
 
C ++
C ++C ++
C ++
 
Apunfun2
Apunfun2Apunfun2
Apunfun2
 
Otra introducción a apuntadores
Otra introducción a apuntadoresOtra introducción a apuntadores
Otra introducción a apuntadores
 
Java 8
Java 8Java 8
Java 8
 
Elementos basicos c
Elementos basicos cElementos basicos c
Elementos basicos c
 
Introduccion a c++
Introduccion a c++Introduccion a c++
Introduccion a c++
 
Elementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivelElementos básicos de un lenguaje de alto nivel
Elementos básicos de un lenguaje de alto nivel
 
Guía funciones
Guía funcionesGuía funciones
Guía funciones
 
Previo8- Dispos E/S
Previo8- Dispos E/SPrevio8- Dispos E/S
Previo8- Dispos E/S
 

Similar a Formato de desarrollo_del_proyecto

Similar a Formato de desarrollo_del_proyecto (20)

Ejercicios propuestosc++
Ejercicios propuestosc++Ejercicios propuestosc++
Ejercicios propuestosc++
 
Curva de daño de un transformador c++
Curva de daño de un transformador c++Curva de daño de un transformador c++
Curva de daño de un transformador c++
 
Informe tecnicou1
Informe tecnicou1Informe tecnicou1
Informe tecnicou1
 
Análisis espacial con R (asignatura de Master - UPM)
Análisis espacial con R (asignatura de Master - UPM)Análisis espacial con R (asignatura de Master - UPM)
Análisis espacial con R (asignatura de Master - UPM)
 
Ejercicios de programacion en c++
Ejercicios de programacion en c++Ejercicios de programacion en c++
Ejercicios de programacion en c++
 
Cpp
CppCpp
Cpp
 
Cpp
CppCpp
Cpp
 
Informe tecnico
Informe tecnicoInforme tecnico
Informe tecnico
 
Taller processing arduino
Taller processing arduinoTaller processing arduino
Taller processing arduino
 
Lecture 37
Lecture 37Lecture 37
Lecture 37
 
NOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVANOTACIÓN POSTFIJA E INFIJA - JAVA
NOTACIÓN POSTFIJA E INFIJA - JAVA
 
Equipo7 Arduino
Equipo7 ArduinoEquipo7 Arduino
Equipo7 Arduino
 
Revista digital
Revista digitalRevista digital
Revista digital
 
informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento- informe unidad 5 -Metodos de ordenamiento-
informe unidad 5 -Metodos de ordenamiento-
 
Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1
 
Ejemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stlEjemplo de solución de práctica funciones stl
Ejemplo de solución de práctica funciones stl
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Interpolaion c++
Interpolaion c++Interpolaion c++
Interpolaion c++
 
Programas en lenguaje ensamblador
Programas en lenguaje ensambladorProgramas en lenguaje ensamblador
Programas en lenguaje ensamblador
 
C# calculadora
C# calculadoraC# calculadora
C# calculadora
 

Formato de desarrollo_del_proyecto

  • 1. FORMATO DE DESARROLLO DEL PROYECTO DE APLICACIÓN Curso: Matemática Discreta Clase: ORDENAMIENTO DE RUTAS TURÍSTICAS APLICANDO LA Título del proyecto: TEORÍA DE ÁRBOLES BINARIOS Nº de equipo de Trabajo: Integrantes: Chalán Malca, Junior. Iparraguirre Ruiz, Max. Urteaga Vásquez, Jhon. Fecha de sustentación: Semana 15 Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 2. 1. TEMA DEL PROYECTO: Proponer distintas rutas para la empresa de turismo Terralan utilizando la teoría de ordenamiento de árboles binarios. 2. PLANTEAMIENTO DEL PROBLEMA: La empresa “Terralan” llega a Cajamarca para brindar el servicio de turismo. Terralan quiere ofrecer distintas rutas que permitan llegar a todos los lugares turísticos con el mismo costo; para solucionar el problema Terralan está solicitando un ingeniero de sistemas para obtener una solución. 3. OBJETIVO: -Hacer un programa que indique las distintas rutas que permitan llegar a todos los lugares turísticos. 4. MODELO MATEMÁTICO: Vértice: También llamado nodo unidad fundamental de la que están formados los grafos. Aristas: Son las uniones entre vértices. Grafo: Es una figura formada por vértices y aristas. Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 3. Árbol: Un árbol es un grafo. Subárbol: Árbol binario: Es un árbol en el que ningún nodo puede tener más de dos subárboles. En un árbol binario cada nodo puede tener cero, uno o dos hijos (subárboles). Se conoce el nodo de la izquierda como hijo izquierdo y el nodo de la derecha como hijo derecho. 5. MÉTODOS DE SOLUCIÓN Para obtener distintas rutas que permitan llegar a todos los destinos turísticos se hace uso de los recorridos sobre árboles binarios: -Recorrido en preorden: En éste tipo de recorrido se sigue el orden: nodo raíz, subárbol izquierdo y subárbol derecho. -Recorrido en postorden: En este caso el recorrido sigue el orden: subárbol izquierdo, nodo raíz y subárbol derecho. -Recorrido en inorden: En este caso el recorrido sigue el orden: Subárbol izquierdo, subárbol derecho y nodo raíz. 6. ALGORITMO COMPUTACIONAL: #include <iostream> #include <stdlib.h> #include <conio.h> #include <dos.h> #include <math.h> int nodo; /*Indicador de niveles que va tener nuestro arbol*/ Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 4. /*A consecuencia del gotoxy, nuestro programa solo admite 5 niveles*/ /*Estructura llamada arbol*/ struct arbol{ int grado;/*grado del arbol, por defecto comienza en uno*/ char inf; /*valor que se captura por pantalla*/ struct arbol *i,*d; /*Referencia a los nodos izquierdo y derecho*/ }*cab,*cola,*p,*q;/*Instancias de la estructura arbol*/ int opciones();/*Muestra llenar arbol o salir del arbol*/ void upn(); /*Logo de la upn*/ void principal();/*Muestra los integrantes*/ int op ; /*Varible para salir o llenar arbol*/ void iniciar();/*Procedimiento donde se indica niveles del arbol*/ void llenar_arbol(arbol *cola, int x, int y);/*Se capturan los valores de los nodos*/ void pre_ord(arbol *cab);/*Se ordena el arbol en pre-orden*/ void in_ord(arbol *cab);/*Se ordena el arbol en in-orden*/ void post_ord(arbol *cab);/*Se ordena el arbol en post-orden*/ void dib_cuadro(int ax,int ay,int bx,int by); /*Se dibuja el rectangulo que delimita al nodo*/ int main() { principal(); Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 5. do{ clrscr(); op= opciones(); clrscr(); switch(op){ case 1:iniciar(); break; case 2:exit(1);} textcolor(14); gotoxy(1,17); cprintf( "RECORRIDO DE LOS ELEMENTOS PRE-ORDENn" ); textcolor(14); gotoxy(1,18); pre_ord(cab); cprintf("n"); textcolor(14); gotoxy(1,21); cprintf( "RECORRIDO DE LOS ELEMENTOS IN-ORDENn" ); textcolor(14); gotoxy(1,22); in_ord(cab); cprintf("n"); Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 6. textcolor(14); gotoxy(1,26); cprintf( "RECORRIDO DE LOS ELEMENTOS POST-ORDENn" ); textcolor(15); gotoxy(1,27); post_ord(cab); cprintf("n"); gotoxy(1,30); system ("PAUSE"); system("CLS"); } while(op<2); return 0; } void principal(){ upn(); gotoxy(25,5); textcolor(4);//color rojo cprintf( "UNIVERSIDAD PRIVADA DEL NORTEn" ); gotoxy(24,7); gotoxy(5,17);cprintf( " INTEGRANTESn" ); textcolor(18);//color verde Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 7. gotoxy(5,18);cprintf( " Chalan Malca,Juniorn" ); gotoxy(5,19);cprintf( " Iparraguirre ruiz,Darwinn" ); gotoxy(5,20);cprintf( " Urteaga Vasquez,Jhonn" ); gotoxy(5,21);cprintf( " =========================n" ); textcolor(4); getch(); } int opciones() { int op; textcolor(18); gotoxy(25,7); cprintf( " ARBOLES BINARIOS " ); textcolor(15); gotoxy(30,10); cprintf( " OPCIONES " ); textcolor(14); gotoxy(25,14); cprintf( " <1> " ); textcolor (15); cprintf( " LLENAR ARBOL " ); textcolor(14); gotoxy(25,16); cprintf( " <2> " ); textcolor (15); cprintf( " SALIR " ); gotoxy(25,20); cprintf( " Digite su opcion: " ); Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 8. gotoxy(45,20); cin>> op ; return op; } void upn(){ textcolor(15); //Color blanco gotoxy(15,10);cprintf(" *// *// * * * * * *- *- -n"); gotoxy(15,11);cprintf(" *// *// *// * * *- *- -n"); gotoxy(15,12);cprintf(" *// *// *// * * *- *- -n"); gotoxy(15,13);cprintf(" *// *// * * * * * *-*- -n"); gotoxy(15,14);cprintf(" *// *// *// * *- -n"); gotoxy(15,15);cprintf(" * * * *// *// * * -n"); } void iniciar(){ int x=40,y=1; textcolor(GREEN); gotoxy(0,2);cprintf("Ingrese niveles del arbol: "); textcolor(15); cin>>nodo; system("CLS"); Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 9. textcolor(7); cab = new(arbol); /*cab es un nuevo arbol*/ cab->i = NULL;/*Nodo izquierdo en principio nulo*/ cab->d = NULL;/*Nodo derecho en principio nulo*/ cab->grado=1; /*Se otorga grado uno*/ cola=cab; /*cab se comvierte en cola*/ llenar_arbol(cola,x,y);/*se llama al procedimiento llenar arbol*/ } void llenar_arbol(arbol *cola,int x, int y){ int z; dib_cuadro(x,x+3,y,y+2);/*Se le pasa como parametro x and y.Ademas se les suma unos centimetros mas para que se dibuje al contorno de el valor del nodo*/ gotoxy(x+1,y+1); textcolor(14); cin>>cola->inf;/*Se captura el valor que es introducido por pantalla, se le denomina inf*/ z=x+pow(2,nodo-(cola->grado)); /*z es igual a x + potenciacionde 2 a la (nodo menos grado)*/ x=x-pow(2,nodo-(cola->grado)); y=y+3; if(cola->grado < nodo){ /*Si grado es menor que los niveles introducidos por pantalla: */ p = new(arbol); /*Se crea un nuevo arbol*/ Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 10. p->i = NULL; /*Se inicia con nodo izquierdo nulo*/ p->d = NULL; /*Se inica con nodo derecho nulo*/ p->grado=cola->grado+1;/*se le suma uno al grado y ese nuevo grado se le asigna a p grado*/ cola->i = p;/*instancia cola con el atrivuto nodo izquierdo se le asigna a p*/ llenar_arbol(p,x,y); /*Se llama nuevamente al procedimiento llenar arbol con nuevos parametros*/ q = new(arbol); q->i = NULL; q->d = NULL; q->grado=cola->grado+1; cola->d = q; llenar_arbol(q,z,y); } } /*Primero se procesa la raiz, luego de izquierda a derecha sus ramas incluyendo sus ojas*/ /*Primero procesamos el nodo actual,depues el subarbol inzquierdo y finalmente el subarbol derecho */ void pre_ord(arbol *cab){ if(cab){ cout<<cab->inf<<" "; /*Aplica la funcion al dato del nodo actual*/ Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 11. pre_ord(cab->i); /*subarbol izquierdo*/ pre_ord(cab->d); /*Subarbol derecho*/ } } /*Primero procesamos el subarbol izquierdo,despues el nodo actual, y finalemnte el subarbol derecho*/ void in_ord(arbol *cab){ if (cab){ in_ord(cab->i);/*Subarbol izquierdo*/ cout<<cab->inf<<" ";/*Aplica la funcion al dato del nodo actual*/ in_ord(cab->d);/*Sub arbol derecho*/ } } /*Primero procesamos el subarbol izquierdo,despues el subarbol derecho y finalmente el nodo actual*/ void post_ord(arbol *cab) { if (cab) { post_ord(cab->i);/*Subarbol izquierdo*/ Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 12. post_ord(cab->d);/*Sub arbol derecho*/ cout<<cab->inf<<" ";/*Aplica la funcion al dato del nodo actual*/ } } void dib_cuadro(int ax,int ay,int bx, int by){ textcolor(12);/*Color rojo*/ int a;/*Varible entera que nos va ha servir como iterador para dibujar las lineas*/ for (a=ax;a<=ay;a++) { gotoxy (a,bx); cout<<(char(196)); /*Linea horizontal*/ gotoxy (a,by); /*Posicionamiento de la linea*/ cout<<(char(196)); } for (a=bx;a<=by;a++){ gotoxy (ax,a); cout<<(char(179)); /*Linea vertical*/ gotoxy (ay,a); cout<<(char(179));} gotoxy (ax,bx); cout<<(char(218)); /*esquina superior izquierda*/ gotoxy (ax,by); cout<<(char(192)); /*esquina inferior izquierda*/ Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 13. gotoxy (ay,bx); cout<<(char(191)); /* esquina superior derecha*/ gotoxy (ay,by); cout<<(char(217)); /* esquina inferior derecha*/ } 7. RESULTADOS: 8. CONCLUSIONES: 9. REFERENCIAS BIBLIOGRÁFICAS: Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011
  • 14. 10. CRONOGRAMA DE ACTIVIDADES (Las actividades se enumeran en la primera columna. Se señalará con una X la semana de culminación de cada actividad). ACTIVIDADES Mes/semanas Ago Set. Oct. Nov. Dic. Actividades 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Tema del Proyecto x Recopilación de información x Planteamiento del problema x Objetivos x Modelo matemático x Métodos de solución x Algoritmo computacional x Resultados x Conclusiones x Sustentación x Facultad de Ingeniería y Arquitectura Semestre 2011-II Carrera de Ingeniería de Sistemas Fecha: 22/08/2011