lunes, 15 de julio de 2013

Agenda Electronica con Arboles ABB en C++

Esta vez les traigo una agenda electronica implemetando arboles ABB, las funciones de la agenda son: agregar un nuevo contacto, buscar, eliminar, mostrar todos los contactos y mostrar el numero de contactos dentro de la agenda.

 Capturas:




Codigo:

Agenda.cpp


#include 
#include 
#include "agenda.h"
using namespace std;

int main()
{
  arbol A;
  Tarbol b;
  char nombre[30];
  char telefono[10];
  char direccion[30];
  char Email[40];
  int op;
  A.insertar(A.miarbol,"m"," 1"," 1"," 1");
  cout<>op;
	  switch(op)
	  {
	  case 1:
		  {fflush(stdin); system("cls");
			  //agregar
			
			cout<nombre<telefono<Email<direccion<nombre)<0){
			 insertar(aux->Izdo,nom,tel,dir,e); 
			}else if(strcmpi(nom,aux->nombre)>0 ){
			insertar(aux->Dcho,nom,tel,dir,e);}
	
	    }

}
Tarbol arbol::buscar(Tarbol aux,char nom[30])
{  
	if (aux==NULL){  
		return NULL;}
	else {if (strcmpi(nom,aux->nombre)==0){
				return aux;}
	else {	if (strcmpi(nom,aux->nombre)<0){
				return buscar(aux->Izdo, nom);}
			else{ return buscar(aux->Dcho, nom);}}
		}
}

void arbol::borrar( Tarbol &aux,char nom[30])
{
	if (aux==NULL){
		cout<<"contacto no encontrado no encontrado !!";}
	else {if (strcmpi(nom,aux->nombre)<0){
	           borrar(aux->Izdo, nom);}
	      else {if (strcmpi(nom,aux->nombre)>0){
				borrar(aux->Dcho,nom);}
				else{ Tarbol temp=aux;
				if (aux->Izdo== NULL){
					aux = aux->Dcho;
					}else {if (aux->Dcho == NULL){
								aux = aux->Izdo;}
							else {reemplazar(temp,temp->Izdo);}
						
					delete  temp;
					}
				}
		  }
	}
}
void arbol::reemplazar(Tarbol &temp, Tarbol &aux)
{ 
	if(aux->Dcho!=NULL){
		reemplazar(temp,aux->Dcho);}
	else{
		strcpy(temp->nombre,aux->nombre);
		strcpy(temp->telefono,aux->telefono);
		strcpy(temp->Email,aux->Email);
		strcpy(temp->direccion,aux->direccion);
		
	    temp=aux;
		aux=temp->Izdo;
	}
}



void arbol::Inorden( Tarbol aux){//muestra de la A-Z
if(aux!=NULL){
 Inorden(aux->Izdo); //recorre el subárbol Izquierdo
 if(strcmpi(aux->nombre,"m")!=0){
	 cout<<"--NOMBRE: "<< aux->nombre<<" "<telefono<<" "<Email<<" "<direccion<<" "<Dcho); //recorre el subárbol Derecho
}

}


int arbol::Peso( Tarbol aux)//muestra el numero de contactos
{
   	if(aux!=NULL){
		p++; 
		Peso(aux->Izdo); //recorre el subárbol Izquierdo
		Peso(aux->Dcho);
		return  p;
	}else {
		return -1;}

}




Agenda.h

#include


class nodo{
public:
	char nombre[30];
	char telefono[10];
	char direccion[30];
	char Email[40];
	nodo *Izdo, *Dcho;

	nodo(char nom[30],char tel[10],char dir[30],char e[40], nodo *Iz=NULL, nodo *Dr=NULL){
	strcpy(nombre,nom);
	strcpy(telefono,tel);
	strcpy(direccion,dir);
	strcpy(Email,e);
	Izdo=Iz;
	Dcho=Dr;	
	}
 class arbol;
};
typedef nodo *Tarbol; 
class arbol{
public: 
      Tarbol miarbol;	  
    	int p;
		int a;
			arbol(){
			miarbol=NULL;
			p=0;
			a=0;
	  		  }
void insertar(Tarbol &aux,char nom[30],char tel[10],char dir[30],char e[40]);
Tarbol buscar(Tarbol aux,char nom[30]);
void borrar(Tarbol &aux,char nom[30]);
void reemplazar(Tarbol &temp, Tarbol &aux);


void Inorden(Tarbol aux);


int arbol::Peso(Tarbol aux);


};


descarga todo el proyecto desde aqui.

1 comentario :

  1. Hola de casualidad aun tendrás ese codigo?
    El que descargo de el link no me funciona

    ResponderEliminar