You are on page 1of 13

REPUBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA DEFENSA


UNIVERSIDAD NACIONAL EXPERIMENTAL
POLITCNICA DE LA FUERZAS ARMADAS
UNEFA- NCLEO MRIDA

INTEGRANTES
Cceres Nakassy

C.I.: 16.664.700

Orozco Fran

C.I.: 13.022.764

Algoritmo
Programa principal
1.
2.
3.
4.

Inicio
Declarar variables
Repita hasta que sea 1
Repita para i = 1 hasta 6 hacer
4.1.1.Mostrar men
4.1.1.1.1.
Opcin 1:
4.1.1.1.1.1.1. Pedir cdigo
4.1.1.1.1.1.2. Leer cdigo
4.1.1.1.1.1.3. Pedir descripcin
4.1.1.1.1.1.4. Leer descripcin
4.1.1.1.1.1.5. Pedir aumento
4.1.1.1.1.1.6. Leer aumento
4.1.1.1.1.1.7. Pedir tipo
4.1.1.1.1.1.8. Leer tipo
4.1.1.1.2.
Opcin 2:
4.1.1.1.2.1.1. Muestra todo lo que est contenido en el archivo
4.1.1.1.3.
Opcin 3:
4.1.1.1.3.1.1. Solicita el cdigo
4.1.1.1.3.1.2. Si esta
4.1.1.1.3.1.2.1.1.
Muestra los datos
4.1.1.1.3.1.3. De lo contrario
4.1.1.1.3.1.3.1.1.
Enva un mensaje por pantalla
4.1.1.1.3.1.4. Fin _si
4.1.1.1.4.
Opcin 4:
4.1.1.1.4.1.1. Solicita un cdigo
4.1.1.1.4.1.2. Si esta
4.1.1.1.4.1.2.1.1.
Pregunta si lo desea eliminar
4.1.1.1.4.1.2.1.2.
Si responde que si
4.1.1.1.4.1.2.1.3.
Elimina el cdigo
4.1.1.1.4.1.2.1.4.
De lo contrario se sale
4.1.1.1.4.1.3. De lo contrario
4.1.1.1.4.1.3.1.1.
Enva un mensaje por pantalla
4.1.1.1.4.1.4. Fin _si
4.1.1.1.5.
Opcin 5:
4.1.1.1.5.1.1. Solicita un cdigo
4.1.1.1.5.1.2. Si esta
4.1.1.1.5.1.2.1.1.
Muestra el contenido
4.1.1.1.5.1.2.1.2.
Pide los datos que se desean modificar
4.1.1.1.5.1.2.1.3.
Pregunta si lo desea eliminar
4.1.1.1.5.1.2.1.4.
Si responde que si
4.1.1.1.5.1.2.1.5.
Modifica los cdigo datos del codigo
4.1.1.1.5.1.2.1.6.
De lo contrario se sale
4.1.1.1.5.1.3. De lo contrario
4.1.1.1.5.1.3.1.1.
Enva un mensaje por pantalla
4.1.1.1.5.1.4. Fin _si
4.1.1.1.6.
Opcin 6:
4.1.1.1.6.1.1. Muestra la lista en orden ascendente
4.1.1.1.7.
Opcin 7:
4.1.1.1.7.1.1. Se sale del programa
4.1.2.Fin repita para
5. Fin programa

Funcin buscar del archivo


1. Inicio
2. Abro el archivo para lectura
3. Repita mientras no haya llegado al final del archivo
3.1.1.Igualo la variable al contenido que deseamos consultar
3.1.1.1.1.
si lo encuentro
3.1.1.1.1.1.1. retorno 1
3.1.1.1.2.
Fin_si
3.1.2.Fin _repita_mientras
4. Cierro el archivo
5. Retorno 0
6. Fin
Funcin borrar del archivo
1.
2.
3.
4.
5.

6.
7.

8.
9.

Inicio
Abro el archivo para lectura
Declaro los datos
Solicito el cdigo
Repita mientras no haya llegado al final del archivo
5.1.1.Llamo la funcin de leer dato
5.1.1.1.1.
si lo encuentro
5.1.1.1.1.1.1. igualo la variable a 1
5.1.1.1.2.
Fin_si
5.1.2.Fin _repita_mientras
Cierro el archivo
Si la variable es igual a 1
7.1.1.Mando a mostrar la variable aux
7.1.2.Pregunta si lo desea eliminar
7.1.3.Si la respuesta es afirmativa
7.1.3.1.1.
Borra el cdigo
7.1.3.1.2.
Renombra el archivo
7.1.3.1.3.
Retorna
7.1.4.De lo contrario
7.1.4.1.1.
Enva un mensaje por pantalla
7.1.4.1.2.
Remueve el archivo temporal
7.1.5.Fin_si
Fin_si
Fin

Funcin modificar en el archivo


1.
2.
3.
4.

Inicio
Abro el archivo para lectura
Declaro los datos
Solicito el cdigo
4.1.1.Si lo encuentro
4.1.2.Muestro los datos
4.1.3.Repita mientras no llegue al final del archivo
4.1.3.1.1.
Si encuentro el cdigo
4.1.3.1.1.1.1. Escriba en el archivo los datos que se solicitaron en el
archivo temporal
4.1.3.1.2.
De lo contrario
4.1.3.1.2.1.1. Escriba los datos originales en el archivo temporal
4.1.3.1.3.
Fin_si

4.1.3.1.4.
Pregunta si los desea modificar
4.1.3.1.5.
Si la respuesta es afirmativa
4.1.3.1.5.1.1. Los modifica
4.1.3.1.6.
De lo contrario
4.1.3.1.6.1.1. Enva un mensaje por pantalla
4.1.3.1.6.1.2. Remueve el archivo temporal
4.1.3.1.7.
Fin_si
4.1.4.De lo contrario
4.1.4.1.1.
Enva un mensaje por pantalla
4.1.5.Fin_si
5. Fin
Programa que manipula (un archivo y una lista y realice las funciones descritas en el men del programa)
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <fstream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <ctype.h>
#define ASCENDENTE 1
class nodo {
public:
nodo(int v, nodo *sig = NULL, nodo *ant = NULL) :
valor(v), siguiente(sig), anterior(ant) {}
private:
int valor;
nodo *siguiente;
nodo *anterior;
friend class lista;
};
typedef nodo *pnodo;
class lista {
public:
lista() : plista(NULL) {}
~lista();
void Insertar(int v);
void Borrar(int v);
bool ListaVacia() { return plista == NULL; }
void Mostrar(int);
void Siguiente();
void Anterior();
void Primero();
void Ultimo();
bool Actual() { return plista != NULL; }
int ValorActual() { return plista->valor; }
private:
pnodo plista;
};
lista::~lista()
{
pnodo aux;
Primero();
while(plista)
{
aux = plista;
plista = plista->siguiente;
delete aux;
}
}
void lista::Insertar(int v)
{
pnodo nuevo;
Primero();
// Si la lista est vaca
if(ListaVacia() || plista->valor >v)

{
// Asignamos a lista un nuevo nodo de valor v y
// cuyo siguiente elemento es la lista actual
nuevo = new nodo(v, plista);
if(!plista) plista = nuevo;
else plista->anterior = nuevo;
}
else
{
// Buscar el nodo de valor menor a v
// Avanzamos hasta el ltimo elemento o hasta que el siguiente tenga
// un valor mayor que v
while(plista->siguiente &&plista->siguiente->valor <= v) Siguiente();
// Creamos un nuevo nodo despus del nodo actual
nuevo = new nodo(v, plista->siguiente, plista);
plista->siguiente = nuevo;
if(nuevo->siguiente) nuevo->siguiente->anterior = nuevo;
}
}
void lista::Borrar(int v)
{
pnodo nodo;
nodo = plista;
while(nodo && nodo->valor < v) nodo = nodo->siguiente;
while(nodo && nodo->valor > v) nodo = nodo->anterior;
if(!nodo || nodo->valor != v) return;
// Borrar el nodo
if(nodo->anterior) // no es el primer elemento
nodo->anterior->siguiente = nodo->siguiente;
if(nodo->siguiente) // no el el ltimo nodo
nodo->siguiente->anterior = nodo->anterior;
delete nodo;
}
void lista::Mostrar(int orden)
{
pnodo nodo;
if(orden == ASCENDENTE)
{
Primero();
nodo = plista;
while(nodo)
{
cout <<nodo->valor <<"-> ";
nodo = nodo->siguiente;
}
}
cout << endl;
}
void lista::Siguiente()
{
if(plista) plista = plista->siguiente;
}
void lista::Anterior()
{
if(plista) plista = plista->anterior;
}
void lista::Primero()
{
while(plista &&plista->anterior) plista = plista->anterior;
}
void lista::Ultimo()
{
while(plista && plista->siguiente) plista = plista->siguiente;
}
// Estructura
struct Datos{
int codigo;
char descripcion[40];
int aumento;
char tipo[15];

};
//declaracion de funciones
int *arrayCont;
char *rutaArch = {"c:test.TXT"};
char *rutaTemp = {"c:temp.txt"};
char *letrerosMenu[] = {"[1] ESCRIBIR.","[2] LEER.","[3] BUSCAR.","[4] ELIMINAR.","[5] MODIFICAR.","[6] LISTA.","[7]
SALIR."};
//funciones
void escribeArchivo(Datos dat,char ruta[]){
ofstream esc(ruta,ios::app);
esc <<setw(5)<<setiosflags(ios::right)<<dat.codigo<<" "
<<setw(40)<<setiosflags(ios::left)<<dat.descripcion<<" "
<<setw(5)<<setiosflags(ios::right)<<dat.aumento<<" "
<<setw(15)<<setiosflags(ios::left)<<dat.tipo<<endl;
esc.close();
}
Datos LeerDato(ifstream &leer){
Datos dat;
leer >>dat.codigo; leer.ignore(1,'n');
leer.getline(dat.descripcion,40); leer.ignore(2,'n');
leer >>dat.aumento; leer.ignore(1,'n');
leer.getline(dat.tipo,15); leer.ignore(2,'n');
return dat;
}
int BuscarRegistro(Datos &dat,int cont){
ifstream leer(rutaArch);
while(leer.peek()!=EOF){
dat = LeerDato(leer);
if(dat.codigo==cont) return 1;
}
leer.close();
return 0;
}
void Mostrar(Datos dat,int Tipo){
if(Tipo == 0){
cout <<"Num. de codigo: "<<dat.codigo<<endl
<<"Descripcion: "<<dat.descripcion<<endl
<<"Aumento: "<<dat.aumento<<endl
<<" Tipo: "<<dat.tipo<<endl;
}else if(Tipo == 1){
cout <<setw(5)<<setiosflags(ios::right)<<dat.codigo<<" "
<<setw(40)<<setiosflags(ios::left)<<dat.descripcion<<" "
<<setw(5)<<setiosflags(ios::right)<<dat.aumento<<" "
<<setw(15)<<setiosflags(ios::left)<<dat.tipo<<endl;
}
}
Datos capturaDatos(int cont){
Datos dat;
dat.codigo = cont;
cout <<"Descripcion: "; gets(dat.descripcion);
cout <<"Aumento: "; cin >>dat.aumento;
cout <<"Tipo: "; gets(dat.tipo);
return dat;
}
Datos Altas(){
Datos dat;
int cont;
clrscr();
do{
cout <<"Num. de codigo: "; cin >>cont;
if(BuscarRegistro(dat,cont)){
cout <<"El registro ya existe..."<<endl;
Mostrar(dat,0); getch();
}
else break;
}while(1);
return capturaDatos(cont);
}
void Buscar(){
int cont;

Datos dat;
cout <<"Num. de codigo: "; cin >>cont;
if(BuscarRegistro(dat,cont)) Mostrar(dat,0);
else cout <<"No se encontro el registro...";
getch();
}
void consultaArchivo(){
ifstream leer(rutaArch);
clrscr();
cout <<setw(5)<<setiosflags(ios::right)<<"Cod."<<" "
<<setw(40)<<setiosflags(ios::left)<<"Descripcion:"<<" "
<<setw(5)<<setiosflags(ios::right)<<"Aumento:"<<" "
<<setw(15)<<setiosflags(ios::left)<<"Tipo:"<<endl;
while(leer.peek()!=EOF)
Mostrar(LeerDato(leer),1);
leer.close();
getch();
}
void eliminarRegistro(){
ifstream leer(rutaArch);
Datos dat,aux;
int cont,bandEncontrado = 0;
cout <<"Num. de codigo: "; cin >>cont;
while(leer.peek()!=EOF){
dat = LeerDato(leer);
if(dat.codigo==cont){
bandEncontrado = 1;
aux = dat; continue;
}
escribeArchivo(dat,rutaTemp);
}
leer.close();
if(bandEncontrado){
Mostrar(aux,0);
cout <<"seguro que deseas eliminar el registro S/N : ";
if(toupper(getch())== 'S'){
remove(rutaArch);
rename(rutaTemp,rutaArch); return;
}else{ cout <<"n accion cancelada..."; remove(rutaTemp);}
}else cout <<"No se encontro el registro...";
getch();
}
void modificarRegistro(){
ifstream leer(rutaArch);
Datos dat;
int cont;
cout <<"Num. de codigo: "; cin >>cont;
if(BuscarRegistro(dat,cont)){
Mostrar(dat,0);
while(leer.peek()!=EOF){
dat = LeerDato(leer);
if(dat.codigo==cont) escribeArchivo(capturaDatos(cont),rutaTemp);
else escribeArchivo(dat,rutaTemp);
}
leer.close();
cout <<"seguro que deseas modificar el registro S/N : ";
if(toupper(getch())== 'S'){
remove(rutaArch);
rename(rutaTemp,rutaArch); return;
}else{ cout <<"n accion cancelada..."; remove(rutaTemp);}
}else cout <<"No se encontro el registro...";
getch();
}
void burbujaMejorada(int totalReg){
for(int x=0; x<totalReg-1; x++)
for(int y=0; y<(totalReg-x)-1; y++)
if(arrayCont[y]>arrayCont[y+1]){
int aux
= arrayCont[y];
arrayCont[y] = arrayCont[y+1];
arrayCont[y+1] = aux;
}

}
void ordenarRegistros(){
ifstream leer(rutaArch);
Datos dat;
leer.seekg(0L,ios::end);
int x = 0,totalReg = leer.tellg()/70;
leer.seekg(0L,ios::beg);
arrayCont = new int[totalReg];
while(leer.peek()!=EOF){
dat = LeerDato(leer);
arrayCont[x++] = dat.codigo;
}
burbujaMejorada(totalReg);
for(x=0; x<totalReg; x++) if(BuscarRegistro(dat,arrayCont[x])) escribeArchivo(dat,rutaTemp);
leer.close();
remove(rutaArch);
rename(rutaTemp,rutaArch);
}
int main()
{
int n;
lista Lista;
textmode(C80);
do{
clrscr();
for(int men = 0; men <7; men++) cout <<letrerosMenu[men]<<endl;
switch(getch()){
case '1':
{
cout<<"Ingese un numero a insertar en la lista"<<endl;
cin>>n;
Lista.Insertar(n);
escribeArchivo(Altas(),rutaArch);
ordenarRegistros();
break;
}
case '2':
{
consultaArchivo();
break;
}
case '3':
{
Buscar();
break;
}
case '4':
{
cout<<"Ingese un numero a insertar en la lista"<<endl;
cin>>n;
Lista.Borrar(n);
eliminarRegistro();
break;
}
case '5':
{
modificarRegistro();
break;
}
case '6':
{
Lista.Mostrar(ASCENDENTE);
break;
}
case '7':
{
exit(0);
}

}
}while(1);
}
Programa que maneja un archivo (escribe, muestra ordenado ascendentemente, elimina y modifica)
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <fstream.h>
#include <iomanip.h>
#include <stdlib.h>
#include <ctype.h>
struct Datos{
int codigo;
char descripcion[40];
int aumento;
char tipo[15];
};
int *arrayCont;
char *rutaArch = {"c:test.TXT"};
char *rutaTemp = {"c:temp.txt"};
char *letrerosMenu[] = {"[1] ESCRIBIR.","[2] LEER.","[3] BUSCAR.","[4] ELIMINAR.","[5] MODIFICAR.","[6] SALIR."};
void escribeArchivo(Datos dat,char ruta[]){
ofstream esc(ruta,ios::app);
esc <<setw(5)<<setiosflags(ios::right)<<dat.codigo<<" "
<<setw(40)<<setiosflags(ios::left)<<dat.descripcion<<" "
<<setw(5)<<setiosflags(ios::right)<<dat.aumento<<" "
<<setw(15)<<setiosflags(ios::left)<<dat.tipo<<endl;
esc.close();
}
Datos LeerDato(ifstream &leer){
Datos dat;
leer >>dat.codigo; leer.ignore(1,'n');
leer.getline(dat.descripcion,40); leer.ignore(2,'n');
leer >>dat.aumento; leer.ignore(1,'n');
leer.getline(dat.tipo,15); leer.ignore(2,'n');
return dat;
}
int BuscarRegistro(Datos &dat,int cont){
ifstream leer(rutaArch);
while(leer.peek()!=EOF){
dat = LeerDato(leer);
if(dat.codigo==cont) return 1;
}
leer.close();
return 0;
}
void Mostrar(Datos dat,int Tipo){
if(Tipo == 0){
cout <<"Num. de codigo: "<<dat.codigo<<endl
<<"Descripcion: "<<dat.descripcion<<endl
<<"Num. de aumento: "<<dat.aumento<<endl
<<"Tipo: "<<dat.tipo<<endl;
}else if(Tipo == 1){
cout <<setw(5)<<setiosflags(ios::right)<<dat.codigo<<" "
<<setw(40)<<setiosflags(ios::left)<<dat.descripcion<<" "
<<setw(5)<<setiosflags(ios::right)<<dat.aumento<<" "
<<setw(15)<<setiosflags(ios::left)<<dat.tipo<<endl;
}
}
Datos capturaDatos(int cont){
Datos dat;
dat.codigo = cont;
cout <<"Descripcion: "; gets(dat.descripcion);
cout <<"Num. de aumento: "; cin >>dat.aumento;
cout <<"Tipo: "; gets(dat.tipo);
return dat;
}
Datos Altas(){

Datos dat;
int cont;
clrscr();
do{
cout <<"Num. de codigo: "; cin >>cont;
if(BuscarRegistro(dat,cont)){
cout <<"El registro ya existe..."<<endl;
Mostrar(dat,0); getch();
}
else break;
}while(1);
return capturaDatos(cont);
}
void Buscar(){
int cont;
Datos dat;
cout <<"Num. de codigo: "; cin >>cont;
if(BuscarRegistro(dat,cont)) Mostrar(dat,0);
else cout <<"No se encontro el registro...";
getch();
}
void consultaArchivo(){
ifstream leer(rutaArch);
clrscr();
cout <<setw(5)<<setiosflags(ios::right)<<"No. de cod."<<" "
<<setw(40)<<setiosflags(ios::left)<<"Descripcion:"<<" "
<<setw(5)<<setiosflags(ios::right)<<"No. de aumento:"<<" "
<<setw(15)<<setiosflags(ios::left)<<"Tipo:"<<endl;
while(leer.peek()!=EOF)
Mostrar(LeerDato(leer),1);
leer.close();
getch();
}
void eliminarRegistro(){
ifstream leer(rutaArch);
Datos dat,aux;
int cont,bandEncontrado = 0;
cout <<"Num. de codigo: "; cin >>cont;
while(leer.peek()!=EOF){
dat = LeerDato(leer);
if(dat.codigo==cont){
bandEncontrado = 1;
aux = dat; continue;
}
escribeArchivo(dat,rutaTemp);
}
leer.close();
if(bandEncontrado){
Mostrar(aux,0);
cout <<"seguro que deseas eliminar el registro S/N : ";
if(toupper(getch())== 'S'){
remove(rutaArch);
rename(rutaTemp,rutaArch); return;
}else{ cout <<"n accion cancelada..."; remove(rutaTemp);}
}else cout <<"No se encontro el registro...";
getch();
}
void modificarRegistro(){
ifstream leer(rutaArch);
Datos dat;
int cont;
cout <<"Num. de codigo: "; cin >>cont;
if(BuscarRegistro(dat,cont)){
Mostrar(dat,0);
while(leer.peek()!=EOF){
dat = LeerDato(leer);
if(dat.codigo==cont) escribeArchivo(capturaDatos(cont),rutaTemp);
else escribeArchivo(dat,rutaTemp);
}
leer.close();
cout <<"seguro que deseas modificar el registro S/N : ";

if(toupper(getch())== 'S'){
remove(rutaArch);
rename(rutaTemp,rutaArch); return;
}else{ cout <<"n accion cancelada..."; remove(rutaTemp);}
}else cout <<"No se encontro el registro...";
getch();
}
void burbujaMejorada(int totalReg){
for(int x=0; x<totalReg-1; x++)
for(int y=0; y<(totalReg-x)-1; y++)
if(arrayCont[y]>arrayCont[y+1]){
int aux
= arrayCont[y];
arrayCont[y] = arrayCont[y+1];
arrayCont[y+1] = aux;
}
}
void ordenarRegistros(){
ifstream leer(rutaArch);
Datos dat;
leer.seekg(0L,ios::end);
int x = 0,totalReg = leer.tellg()/70;
leer.seekg(0L,ios::beg);
arrayCont = new int[totalReg];
while(leer.peek()!=EOF){
dat = LeerDato(leer);
arrayCont[x++] = dat.codigo;
}
burbujaMejorada(totalReg);
for(x=0; x<totalReg; x++) if(BuscarRegistro(dat,arrayCont[x])) escribeArchivo(dat,rutaTemp);
leer.close();
remove(rutaArch);
rename(rutaTemp,rutaArch);
}
int main(){
textmode(C80);
do{
clrscr();
for(int men = 0; men < 6; men++) cout <<letrerosMenu[men]<<endl;
switch(getch()){
case '1': escribeArchivo(Altas(),rutaArch); ordenarRegistros(); break;
case '2': consultaArchivo(); break;
case '3': Buscar(); break;
case '4': eliminarRegistro(); break;
case '5': modificarRegistro(); break;
case '6': exit(0);
}
}while(1);
}
Programa que maneja una lista (ingresa x cantidad de elementos y los muestra)
#include <iostream.h>
#include <stdlib.h>
#define ASCENDENTE 1
#define DESCENDENTE 0
class nodo {
public:
nodo(int v, nodo *sig = NULL, nodo *ant = NULL) :
valor(v), siguiente(sig), anterior(ant) {}
private:
int valor;
nodo *siguiente;
nodo *anterior;
friend class lista;
};
typedef nodo *pnodo;
class lista {
public:
lista() : plista(NULL) {}
~lista();

void Insertar(int v);


void Borrar(int v);
bool ListaVacia() { return plista == NULL; }
void Mostrar(int);
void Siguiente();
void Anterior();
void Primero();
void Ultimo();
bool Actual() { return plista != NULL; }
int ValorActual() { return plista->valor; }
private:
pnodo plista;
};
lista::~lista()
{
pnodo aux;
Primero();
while(plista)
{
aux = plista;
plista = plista->siguiente;
delete aux;
}
}
void lista::Insertar(int v)
{
pnodo nuevo;
Primero();
// Si la lista est vaca
if(ListaVacia() || plista->valor >v)
{
// Asignamos a lista un nuevo nodo de valor v y
// cuyo siguiente elemento es la lista actual
nuevo = new nodo(v, plista);
if(!plista) plista = nuevo;
else plista->anterior = nuevo;
}
else
{
// Buscar el nodo de valor menor a v
// Avanzamos hasta el ltimo elemento o hasta que el siguiente tenga
// un valor mayor que v
while(plista->siguiente &&plista->siguiente->valor <= v) Siguiente();
// Creamos un nuevo nodo despus del nodo actual
nuevo = new nodo(v, plista->siguiente, plista);
plista->siguiente = nuevo;
if(nuevo->siguiente) nuevo->siguiente->anterior = nuevo;
}
}
void lista::Borrar(int v)
{
pnodo nodo;
nodo = plista;
while(nodo && nodo->valor < v) nodo = nodo->siguiente;
while(nodo && nodo->valor > v) nodo = nodo->anterior;
if(!nodo || nodo->valor != v) return;
// Borrar el nodo
if(nodo->anterior) // no es el primer elemento
nodo->anterior->siguiente = nodo->siguiente;
if(nodo->siguiente) // no el el ltimo nodo
nodo->siguiente->anterior = nodo->anterior;
delete nodo;
}
void lista::Mostrar(int orden)
{
pnodo nodo;
if(orden == ASCENDENTE)
{
Primero();
nodo = plista;

while(nodo)
{
cout <<nodo->valor <<"-> ";
nodo = nodo->siguiente;
}
}
cout << endl;
}
void lista::Siguiente()
{
if(plista) plista = plista->siguiente;
}
void lista::Anterior()
{
if(plista) plista = plista->anterior;
}
void lista::Primero()
{
while(plista &&plista->anterior) plista = plista->anterior;
}
void lista::Ultimo()
{
while(plista && plista->siguiente) plista = plista->siguiente;
}
int main()
{
lista Lista;
int op;
do {
cout<<"
Menu"<<endl;
cout<<"1. Insertar codigo en lista"<<endl;
cout<<"2. Consultar codigo en Estructura"<<endl;
cout<<"3. Salir"<<endl;
cout<<"Seleccione opcion que quiere utilizar"<<endl;
cin>>op;
switch (op){
case 1:
system("cls");
int n;
cout<<"Ingrese la cantidad de elementos que desea introducir en la lista :";
cin>>n;
for (int i = 1; i <= n; i++ ) {
int cod;
cout<<"Ingrese el valor "<<i<<" a su lista"<<endl;
cin>>cod;
Lista.Insertar(cod);
}
system ("cls");
break;
case 2:
system ("cls");
cout << "Lista de elementos:" << endl;
Lista.Primero();
while(Lista.Actual()) {
cout << Lista.ValorActual() << endl;
Lista.Siguiente();
}
system ("pause");
system ("cls");
break;
}
}while (op<3);
system("PAUSE");
return 0;
}

You might also like