ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Codigo multilistas en c++

oscarmurilloTarea6 de Octubre de 2017

1.971 Palabras (8 Páginas)999 Visitas

Página 1 de 8

#include <iostream>

#include <string>

#include <cstdlib>

#include <stdio.h>

#include <conio.h>

#include <windows.h>

/*

Oscar Murillo Vasquez 625741

*/

using namespace std;

class Libro{

public:

Libro();//

string nombre;

int id;

Libro *sig;

};

class Categoria{

public:

Categoria();

string nombre;

int id;

int cantidadLibros;

Categoria *sig;

Libro *cabLibro;

Libro *ultimoLibro;

void agregarLibro(Libro *nuevo,string nombre, int id);//

Libro *existeLibro(int id);//

void eliminarLibroDeUnaCategoria(int id);

};

class Sede{

public:

Sede();//

string nombre;

int id;

int cantidadCategorias;

Categoria *cabCategoria;

Categoria *ultimaCategoria;

Sede *sigSede;

void agregarCategoria(Categoria *nuevo,string nombre,int id);//

Categoria *existeCategoria(int id);//

void mostrarCategoriasDeUnaSede();//

void mostrarCategoriasYLibrosDeUnaSede();//

void eliminarUnaCategoria(int id);//

};

class Lista{

public:

Lista();//

Sede *cab;

Sede *ultimo;

void crearSede(Sede *nuevo,string nombre,int id);//

void mostrarTodo();//

void mostrarSedes();//

Sede *existeSede(int id);//

void eliminarSede(int id);//

void sedeConMayorCategoriasYEjemplares();

};

void menu(Lista *lista);

void cstdlib(Lista *lista);

void setColor(int i);

HANDLE hCon;

Sede::Sede(){

cabCategoria=NULL;

ultimaCategoria=NULL;

sigSede=NULL;

cantidadCategorias=0;

}

Lista::Lista(){

cab=NULL;

ultimo=NULL;

}

Libro::Libro(){

sig=NULL;

}

Categoria::Categoria(){

cantidadLibros=0;

sig=NULL;

cabLibro=NULL;

ultimoLibro=NULL;

}

Sede *Lista::existeSede(int id){

Sede *aux = cab;

if(aux == NULL){

return NULL;

}

while(aux != NULL){

if(aux->id == id){

return aux;

}else{

aux=aux->sigSede;

}

}

return NULL;

}

Categoria *Sede::existeCategoria(int id){

Categoria *aux = cabCategoria;

if(aux == NULL){

return NULL;

}

while(aux != NULL){

if(aux->id == id){

return aux;

}else{

aux=aux->sig;

}

}

return NULL;

}

Libro *Categoria::existeLibro(int id){

Libro *aux = cabLibro;

if(aux == NULL){

return NULL;

}

while(aux != NULL){

if(aux->id == id){

return aux;

}else{

aux=aux->sig;

}

}

return NULL;

}

void Lista::crearSede(Sede *nuevo,string nombre,int id){

if(cab == NULL){

cab=nuevo;

nuevo->nombre=nombre;

nuevo->id=id;

nuevo->sigSede=NULL;

ultimo=nuevo;

}else{

ultimo->sigSede=nuevo;

nuevo->nombre=nombre;

nuevo->id=id;

nuevo->sigSede=NULL;

ultimo=nuevo;

}

}

void Lista::mostrarSedes(){

system("cls");

Sede *aux = cab;

bool bandera = true;

if(aux == NULL){

setColor(4);

cout<<"Lista vacia "<<endl<<endl;

bandera=false;

}

if(bandera==true){

cout<<"---------------------------------------------------------------"<<endl<<endl;

while(aux != NULL){

setColor(10);

cout<<"nombre: "<<aux->nombre<<" "<<"id: "<<aux->id<<" "<<endl;

aux=aux->sigSede;

}

cout<<"\n-------------------------------------------------------------"<<endl<<endl;

}

}

void Lista::mostrarTodo(){

system("cls");

int x=3;

int y=3;

Sede *aux = cab;

Categoria *aux1 = NULL;

Libro *aux2=NULL;

bool bandera=true;

if(cab == NULL){

setColor(4);

cout<<"lista vacia "<<endl<<endl;

bandera=false;

}

if(bandera==true){

while(aux != NULL){

aux1=aux->cabCategoria;

setColor(12);

cout<<"\n-----------------------------------------------------------------------------------------------------"<<endl;

cout<<" nombre de la sede: "<<aux->nombre<<endl<<endl;

while(aux1 != NULL){

aux2=aux1->cabLibro;

setColor(14);

cout<<" Categoria: "<<aux1->nombre<<endl<<endl;

while(aux2 != NULL){

setColor(9);

cout<<" nombre del libro: "<<aux2->nombre<<" ID: "<<aux2->id<<endl;

aux2=aux2->sig;

}

aux1=aux1->sig;

cout<<endl;

}

aux=aux->sigSede;

}

}

}

void Lista::eliminarSede(int id){

Sede *aux=cab;

Sede *anterior=NULL;

Categoria *opc=NULL;

string nombre;

if(aux->id == id && aux->sigSede == NULL){

nombre=aux->nombre;

if(aux->cabCategoria != NULL){

opc=aux->cabCategoria;

while(opc->sig != NULL){

opc=opc->sig;

}

delete opc;

}

cab=NULL;

setColor(12);

cout<<"\nse elimino la sede "<<nombre<<endl<<endl;

}else if(aux->id == id && aux->sigSede != NULL){

cab=aux->sigSede;

nombre=aux->nombre;

if(aux->cabCategoria != NULL){

opc=aux->cabCategoria;

while(opc->sig !=NULL){

opc=opc->sig;

}

delete opc;

}

setColor(12);

cout<<"\nse elimino la sede "<<nombre<<endl<<endl;

}else{

while(aux != NULL && aux->id != id){

anterior=aux;

aux=aux->sigSede;

}

if(aux != NULL){

anterior->sigSede=aux->sigSede;

nombre=aux->nombre;

if(aux==ultimo){

ultimo=anterior;

}

if(aux->cabCategoria != NULL){

opc=aux->cabCategoria;

while(opc != NULL){

opc=opc->sig;

}

delete opc;

}

setColor(12);

cout<<"\nse elimino la sede "<<nombre<<endl<<endl;

}

}

delete aux;

}

void Sede::agregarCategoria(Categoria *nuevo,string nombre,int id){

bool bandera=false;

if(existeCategoria(id) == NULL){

bandera=true;

}else{

setColor(12);

cout<<"\nla categora ya esta registrado"<<endl<<endl;

}

if(cabCategoria == NULL){

cabCategoria=nuevo;

nuevo->nombre=nombre;

nuevo->id=id;

nuevo->sig=NULL;

ultimaCategoria=nuevo;

cantidadCategorias++;

setColor(10);

cout<<"\nse guardo la categoria"<<endl<<endl;

}else{

if(bandera){

ultimaCategoria->sig=nuevo;

nuevo->nombre=nombre;

nuevo->id=id;

nuevo->sig=NULL;

ultimaCategoria=nuevo;

cantidadCategorias++;

cout<<"\nse guardo la categoria "<<endl<<endl;

}

}

}

void Sede::mostrarCategoriasDeUnaSede(){

Categoria *aux=cabCategoria;

bool bandera = true;

cout<<endl;

if(aux == NULL){

setColor(14);

cout<<"\nlista vacia "<<endl<<endl;

bandera=false;

}

if(bandera){

while(aux != NULL){

setColor(10);

cout<<"Categoria: "<<aux->nombre<<" "<<"ID: "<<aux->id<<endl;

aux=aux->sig;

}

cout<<endl<<endl;

}

}

void Sede::mostrarCategoriasYLibrosDeUnaSede(){

Categoria *aux=cabCategoria;

Libro *aux1 = NULL;

bool bandera=true;

if(cabCategoria == NULL){

cout<<"lista vacia "<<endl<<endl;

bandera=false;

}

...

Descargar como (para miembros actualizados) txt (19 Kb) pdf (100 Kb) docx (23 Kb)
Leer 7 páginas más »
Disponible sólo en Clubensayos.com