|
Listas circulares en C++ |
#include<string.h>
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
struct empleado{
int ident;
char ap[20], nom[20],cargo[20];
int sueldo;
struct empleado *avanc;
};
empleado* insertar_nodo_inicial(void);
void insertar_nodos_circular(empleado *&,int c);
int progenc(empleado *);
void empleadosmayora(empleado *);
void sumanomina(empleado *);
char opciones(empleado *);
void ordenar(empleado*);
void imprime_lista_circ(empleado*);
void eliminar_nodo_circ(empleado *&cab,int i);
char opciones(empleado * cab)
{
char a;
cout<<"n";
cout<<"1.crear nodo inicial"<<"n";
cout<<"2.Insertar nuevo dato"<<"n";
cout<<"3.Programadores en c++"<<"n";
cout<<"4.Sueldo mayor a $2'500.000"<<"n";
cout<<"5.Motrar suma de sueldos empleados"<<"n";
cout<<"6.imprimir lista"<<"n";
cout<<"7.borrar nodo"<<"n";
cout<<"8.salir"<<"n";
cout<<"INGRESE OPCION: ";
cin>>a;
return a;
}
void main()
{
int i,c;
char opcion;
empleado *cab=NULL;
while(opcion!='8')
{
opcion=opciones(cab);
switch(opcion)
{
case '1':cab=insertar_nodo_inicial();
break;
case '2':cout<<"inserte identificacion: ";
cin>>c;
insertar_nodos_circular(*&cab,c);
break;
case '3':cout<<"en la empresa hay "<<progenc(cab)<<" programador(es) de c++";
break;
case '4':empleadosmayora(cab);
break;
case '5':sumanomina(cab);
break;
case '6':imprime_lista_circ(cab);
break;
case '7':cout<<"inserte identificacion: ";
cin>>i;
eliminar_nodo_circ(*&cab, i);
break;
case '8':exit(0);
break;
default:cout<<"fuera de parametro";
}
}
}
//crearnodo
empleado* insertar_nodo_inicial()
{
empleado *crear;
crear=new empleado;
cout<<"IDENTIFICACION: ";
cin>>crear->ident;
cout<<"APELLIDO: ";
cin>>crear->ap;
cout<<"NOMBRE: ";
cin>>crear->nom;
cout<<"CARGO: ";
cin>>crear->cargo;;
cout<<"SUELDO: ";
cin>>crear->sueldo;
crear->avanc=crear;
return crear;
}
//insertar nodo
void insertar_nodos_circular(empleado *&cab,int c)
{
empleado *aux;
empleado *r;
if(cab!=NULL)
{
r=cab;
aux=new empleado;
while(r->ident!=c && r->avanc!=cab)
r=r->avanc;
if(r==cab)
{
cout<<"IDENTIFICACION: ";
cin>>aux->ident;
cout<<"APELLIDO: ";
cin>>aux->ap;
cout<<"NOMBRE: ";
cin>>aux->nom;
cout<<"CARGO: ";
cin>>aux->cargo;
cout<<"SUELDO: ";
cin>>aux->sueldo;
aux->avanc=r->avanc;
r->avanc=aux;
r=aux;
}
else
{
aux->avanc=r->avanc;
r->avanc=aux;
cout<<"IDENTIFICACION: ";
cin>>aux->ident;
cout<<"APELLIDO: ";
cin>>aux->ap;
cout<<"NOMBRE: ";
cin>>aux->nom;
cout<<"CARGO: ";
cin>>aux->cargo;
cout<<"SUELDO: ";
cin>>aux->sueldo;
}
}
else
cout<<"no hay nodo inicial de lista por favor digite 1";
}
//prog en c++
int progenc(empleado*cab)
{
empleado *q;
int cant=0;
q=cab;
if(cab)
{
if(strcmp(q->cargo,"programadores_en_c++")==0)
cout<<"n";
cant=cant+1;
while(q->avanc!=cab)
{
if(strcmp(q->cargo,"programadores_en_c++")==0)
cout<<"n";
cant=cant+1;
q=q->avanc;
}
}
else
cout<<"no existe lista";
return cant;
getch();
}
//SUELDO
void empleadosmayora(empleado *cab)
{
empleado *p;
p=cab;
if(cab)
{
if(cab->sueldo>2500000)
{
cout<<"IDENTIFICACION: "<<cab->ident;
cout<<"n";
cout<<"APELLIDO: "<<cab->ap;
cout<<"n";
cout<<"NOMBRE: "<<cab->nom;
cout<<"n";
cout<<"CARGO: "<<cab->cargo;
cout<<"n";
cout<<"SUELDO: "<<cab->sueldo;
cout<<"n";
}
p=cab->avanc;
while(p!=cab){
if(p->sueldo>2500000 && p!=cab)
{
cout<<"n";
cout<<"IDENTIFICACION: "<<p->ident;
cout<<"n";
cout<<"APELLIDO: "<<p->ap;
cout<<"n";
cout<<"NOMBRE: "<<p->nom;
cout<<"n";
cout<<"CARGO: "<<p->cargo;
cout<<"n";
cout<<"SUELDO: "<<p->sueldo;
cout<<"n";
}
p=p->avanc;}
}
else
cout<<"no existe lista";
getch();
}
//SUMANOMINA
void sumanomina(empleado *cab)
{
empleado *q;
int sumnomina=0;
q=cab->avanc;
if(cab)
{
sumnomina=cab->sueldo+sumnomina;
}
while(q!=cab)
{
sumnomina=cab->sueldo+sumnomina;
q=q->avanc;
}
cout<<"El total de la nomina es "<<sumnomina;
getch();
}
void imprime_lista_circ(empleado*cab)
{
empleado *q;
if(cab==NULL)
cout<<"no hay lista";
else
if(cab->avanc==cab)
{
cout<<"n";
cout<<"n";
cout<<"cedula:"<<cab->ident;
cout<<"n";
cout<<"apellido:"<<cab->ap;
cout<<"n";
cout<<"nombre:"<<cab->nom;
cout<<"n";
cout<<"cargo:"<<cab->cargo;
cout<<"n";
cout<<"sueldo:"<<cab->sueldo;
cout<<"n";
cout<<"n";
}
else
{
q=cab;
cout<<"n";
cout<<"n";
cout<<"cedula:"<<cab->ident;
cout<<"n";
cout<<"apellido:"<<cab->ap;
cout<<"n";
cout<<"nombre:"<<cab->nom;
cout<<"n";
cout<<"cargo:"<<cab->cargo;
cout<<"n";
cout<<"sueldo:"<<cab->sueldo;
cout<<"n";
cout<<"n";
q=cab->avanc;
do{
cout<<"cedula:"<<q->ident;
cout<<"n";
cout<<"apellido:"<<q->ap;
cout<<"n";
cout<<"nombre:"<<q->nom;
cout<<"n";
cout<<"cargo:"<<q->cargo;
cout<<"n";
cout<<"sueldo:"<<q->sueldo;
cout<<"n";
cout<<"n";
q=q->avanc;
}
while(q!=cab);
}
getch();
}
//ELIMINAR NODO
void eliminar_nodo_circ(empleado *&cab, int i)
{
empleado *q,*r;
q=r=cab;
if(cab==NULL)
cout<<"no hay cabeza";
else
if(cab->avanc==cab && cab->ident==i)
{
delete(q);
}
else
while((q->ident!=i) && (q->avanc!=cab))
{
q=q->avanc;
}
if(cab->avanc==q)
{
cab->avanc=q->avanc;
delete(q);
}
else
{
while(r->avanc!=q)
{
r=r->avanc;
}
r->avanc=q->avanc;
delete(q);
}
}
![]() |
Escrito por: Tania Poveda |
|
|
LLEVO 3 MESES DE ESTAR EN ESTE FASINATE MUNDO DE LA PROGRAMACION Y NESECITO TODOS LOS CODIGOS FUENTES QUE PUEDAN MANDARME YA ESTOY POR INTRODUCCION A BASE DE DATOS Y ESPERO SU RESPUESTA A MI CORREO
PORFA NECESITO EL CODIGO DE UNA COLA CIRCULAR DE CASUALIDAD NO LO TIENES TU...?
PORFA NECESITO EL CODIGO DE UNA COLA CIRCULAR DE CASUALIDAD NO LO TIENES TU...?
Necesitaria un codigo fuente para poder pasar de 32bit a 16bit al iniciar el juego Virtua Fighter 2 for pc y que se reestablezca a 32 bit el sistema al salir del soft. URGENTE!!!!
NECESITO EL ALGORITMO DE MERGER SOT
si, bien, pero no es orientado a objeto como tal, cuando a objetos nos referimos, es porque de clases tratamos
me parece que si fuera orientado a objetos como buscaba yo el codigo tendria que tener declarada una clase y no una estructura(struct) pero a pesar de que el codigo esta bien y cumple con su objetivo no utiliza las grandes ventajas de la programacion orientada a objeto, entre tantas la encapsulacion de datos y dejaria mucho que deseear a la hora de heredar de esa clase, no?














































