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

Codigo multilistas en c++


Enviado por   •  6 de Octubre de 2017  •  Tarea  •  1.971 Palabras (8 Páginas)  •  972 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

...

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