Manipulación de listas dobles con objetos
C/Visual C
Publicado el 24 de Diciembre del 2002 por Jaime Panta Moreno (2 códigos)
7.641 visualizaciones desde el 24 de Diciembre del 2002
Manipulación de listas dobles con objetos
#include<conio.h>
#include<dos.h>
#include<iostream.h>
#include<ctype.h>
#include<stdio.h>
#include<stdlib.h>
struct nodo
{ char codigo[5];
int numero;
nodo *anterior,*siguiente;
};
nodo *primero,*ultimo,*nuevo,*actual;
class Contar
{ private:
int pares,impares;
void menu();
public:
void agregar();
int menu1();
void listar();
void contardatopar();
void fin();
void contardatoimpar();
Contar();
~Contar();
};
void main()
{ Contar ObjetoContar;
int opcion;
for(;;)
{
opcion=ObjetoContar.menu1();
switch(opcion)
{
case 8:ObjetoContar.agregar();break;
case 22:ObjetoContar.listar();break;
case 36:ObjetoContar.contardatopar();break;
case 50:ObjetoContar.contardatoimpar();break;
case 64:ObjetoContar.fin();exit(0);
}
}
}
Contar::Contar()
{ primero=NULL;
ultimo=NULL;
}
Contar::~Contar()
{ //nada
}
int Contar::menu1()
{ clrscr();
int pos=8;char aux;
gotoxy(5,8);cout<<"Agregar ";
gotoxy(19,8);cout<<"Listar ";
gotoxy(33,8);cout<<"Pares ";
gotoxy(47,8);cout<<"Impares";
gotoxy(61,8);cout<<"Salir ";
for(;;)
{ switch(pos)
{
case 8:gotoxy(pos,8);aux=getch();gotoxy(pos,8);break;
case 22:gotoxy(pos,8);aux=getch();gotoxy(pos,8);break;
case 36:gotoxy(pos,8);aux=getch();gotoxy(pos,8);break;
case 50:gotoxy(pos,8);aux=getch();gotoxy(pos,8); break;
case 64:gotoxy(pos,8);aux=getch();gotoxy(pos,8);break;
}
switch(aux)
{
case 0x4b: pos=pos-14;if(pos==7) pos=65;break;
case 0x4d: pos=pos+14;if(pos==65)pos=7;break;
case 0x0d:return pos;
case 0x3b:exit(0);
}
}
}
void Contar::agregar()
{ clrscr();
nuevo=new nodo;
nuevo->anterior=ultimo;nuevo->siguiente=NULL;
gotoxy(4,5);cout<<"Codigo: ";gets(nuevo->codigo);
gotoxy(4,6);cout<<"Numero: ";cin>>nuevo->numero;
if(primero==NULL)
{ primero=nuevo;
}
else
{ ultimo->siguiente=nuevo;
}
ultimo=nuevo;
}
void Contar::listar()
{ clrscr();
int lin=6;
actual=primero;
while(actual!=NULL)
{ gotoxy(4,lin);puts(actual->codigo);
gotoxy(10,lin);cout<<actual->numero;
lin++;
actual=actual->siguiente;
}
getche();
}
void Contar::contardatopar()
{ clrscr();
pares=0;
actual=primero;
while(actual!=NULL)
{ if(actual->numero%2==0)
{ pares++;
}
actual=actual->siguiente;
}
cout<<"Numero de Nodos que contienen Datos Pares: "<<pares<<endl;
getche();
}
void Contar::contardatoimpar()
{ clrscr();
impares=0;
actual=primero;
while(actual!=NULL)
{ if(actual->numero%2!=0)
{ impares++;
}
actual=actual->siguiente;
}
cout<<"Numero de Nodos que contienen Datos Impares: "<<impares<<endl;
getche();
}
void Contar::fin()
{ int i; clrscr();
for(i=3;i>0;i--)
{ gotoxy(30,8);cout<<"Saliendo del Programa....";
gotoxy(40,13);cout<<i;delay(1000);clrscr();
}
}
Comentarios sobre la versión: Versión 1 (0)
No hay comentarios