The project is in CodeBlocks, what I want is that when you show the list, show them sorted by the "Key" field either ascending or descending. Or that the function insert the order and print them or vice versa.
zapatos.h
#ifndef ZAPATOS_H
#define ZAPATOS_H
#include<string.h>
#include<algorithm>
#include<list>
#include<iterator>
#include<iomanip>
#include<iostream>
using namespace std;
template <typename T>
class zapatos
{
public:
zapatos();
void pideDatos();
void muestraDatos();
//void eliminarUltimo();
void eliminar();
void bubble(zapatos,T n);
void buscarDato();
void modificarDato();
zapatos *siguiente;
zapatos *anterior;
zapatos *auxPrimero=NULL;
zapatos *auxUltimo=NULL;
int auxZap,auxz2,auxz3;
zapatos *auxTres;
zapatos *auxDos;
zapatos *zapatosLDE;
private:
T precio;
string modelo;
T clave;
};
template <typename T>
zapatos<T>::zapatos()
{
//ctor
}
template <typename T>
void zapatos<T>::pideDatos(){
zapatosLDE=new zapatos;
cout<< "Ingrese la Clave del producto: ";
cin>>zapatosLDE->clave;
cout<< "Ingrese el Modelo: ";
getline(cin,zapatosLDE->modelo);
getline(cin,zapatosLDE->modelo);
cout<< "Ingrese el precio:$";
cin>>zapatosLDE->precio;
cout<<endl;
zapatosLDE->siguiente=auxPrimero;
auxPrimero=zapatosLDE;
}/*
template <typename T>
void zapatos<T>::bubble(zapatos clave,T n){
T aux;
for(int i=0; i<n-1; i++){
for(int j=0; j<n-1-i;j++){
if(zapatosLDE->clave > zapatosLDE->clave[j+1] ){
aux=clave[j];
clave[j]=clave[j+1];
clave[j+1]=aux;
}
}
}
}
*/
template <typename T>
void zapatos<T>::muestraDatos(){
cout<< "\t|Clave|\t\t|Modelo|\t\t|Precio|"<<endl;
int clave=0;
while(zapatosLDE!=NULL){
//zapatos<T>::bubble(clave ,T n);
cout<<"\t"<<zapatosLDE->clave<<"\t"
<<"\t"<<zapatosLDE->modelo<< "\t"
<<"\t\t$"<<zapatosLDE->precio<<endl;
zapatosLDE=zapatosLDE->siguiente;
}
}/*
template <typename T>
void zapatos<T>::sort(){
int temp_data;
zapatosLDE=auxPrimero;
auxTres=zapatosLDE;
while(zapatosLDE){
auxTres=zapatosLDE;
if(zapatosLDE->clave > auxTres->clave){
temp_data=zapatosLDE->clave;
zapatosLDE->clave=temp_data;
auxTres->clave=temp_data;
break;
}
}zapatosLDE=zapatosLDE->siguiente;
}*/
template <typename T>
void zapatos<T>::eliminar(){
char ask[2];
int tecla=1;
zapatosLDE=auxPrimero;
if(zapatosLDE==NULL){
cout<< "No hay Datos!"<<endl;
}else{
cout<< "Ingrese la clave del producto a eliminar: "<<endl;
cin>>auxZap;
do{
if(auxZap==zapatosLDE->clave){
cout<< "\nClave: "<<zapatosLDE->clave<<endl
<< "Modelo: "<<zapatosLDE->modelo<<endl
<< "Precio: "<<zapatosLDE->precio<<endl;
cout<< endl<< "Seguro de continuar? S/N"<<endl;
cin>>ask[2];
if((ask[2]=='S')||(ask[2]=='s')){
auxPrimero=zapatosLDE->siguiente;
delete(zapatosLDE);
}
//zapatosLDE=auxPrimero;
cout<< "Dato eliminado"<<endl;
break;
}else{
//auxUltimo=zapatosLDE;
auxTres=zapatosLDE;
zapatosLDE=zapatosLDE->siguiente;
if(zapatosLDE==NULL){
cout<< "Dat no found"<<endl;
//break;
}
}
if(auxZap== zapatosLDE->clave){
cout<< "\nClave: "<<zapatosLDE->clave<<endl
<< "Modelo: "<<zapatosLDE->modelo<<endl
<< "Precio: "<<zapatosLDE->precio<<endl;
cout<< endl<< "Seguro de continuar? S/N"<<endl;
cin>>ask[2];
if((ask[2]=='S')||(ask[2]=='s')){
auxDos=zapatosLDE->siguiente;
delete(zapatosLDE);
zapatosLDE=auxTres;
zapatosLDE->siguiente=auxDos;
cout<< "Dato elimina2"<<endl;
break;
}
}
}while(zapatosLDE!=NULL);
}
}
template <typename T>
void zapatos<T>::buscarDato(){
zapatosLDE=auxPrimero;
if(zapatosLDE==NULL)
cout<< "Zero elements"<<endl;
else{
cout<< "Escriba la clave #:";
cin>>auxz3;
int tecla=1;
do{
if(auxz3==zapatosLDE->clave){
cout<< "Clave: "<<zapatosLDE->clave<<endl
<< "Modelo: "<<zapatosLDE->modelo<<endl
<< "Precio:$"<<zapatosLDE->precio<<endl;
tecla=2;
}else{
zapatosLDE=zapatosLDE->siguiente;
if(zapatosLDE==NULL)
cout<< "No found!!"<<endl;
}
}while((tecla!=2) && (zapatosLDE!=NULL));
}
}
template <typename T>
void zapatos<T>::modificarDato(){
int tecla;
zapatosLDE=auxPrimero;
if(zapatosLDE==NULL)
cout<< "No hay elements"<<endl;
else{
cout<< "Clave del zapato a modificar: ";
cin>>auxz2;
int n=0;
do{
if(auxz2==zapatosLDE->clave){
cout<<endl
<<"Clave "<<zapatosLDE->clave<<endl
<< "Modelo "<<zapatosLDE->modelo<<endl
<< "Precio "<<zapatosLDE->precio<<endl<<endl;
cout<< "Qué quiere modificar?: "<<endl
<< "1.clave"<<endl
<< "2.modelo"<<endl
<< "3.precio"<<endl;
cin>>tecla;
n=1;
switch(tecla){
case 1:
cout<< "Escriba la nueva clave"<<endl;
cin>>zapatosLDE->clave;
break;
case 2:
cout<< "Escriba el nuevo modelo"<<endl;
getline(cin,zapatosLDE->modelo);
getline(cin,zapatosLDE->modelo);
break;
case 3:
cout<< "Escriba el nuevo precio"<<endl;
cin>>zapatosLDE->precio;
break;
}
}else{
zapatosLDE=zapatosLDE->siguiente;
if(zapatosLDE==NULL)
cout<< "Dato no encontrado!!"<<endl;
}
}while( (zapatosLDE!=NULL) && (n==0));
}
}
#endif // ZAPATOS_H
main.cpp
#include <iostream>
#include"zapatos.h"
#include<string.h>
#include<cstdlib>
#include<algorithm>
#include<conio.h>
using namespace std;
int main()
{
zapatos<int> Z;
bool flag=false;
char tecla;
do{
system("cls");
cin.clear();
cout<< "\t***Elige una opcion***"<<endl
<< "\t1)Agregar"<<endl
<< "\t2)Quitar"<<endl
<< "\t3)Buscar"<<endl
<< "\t4)Mostrar Lista"<<endl
<< "\t5)Modificar"<<endl
<< "\t6)Salir"<<endl;
cin>>tecla;
switch(tecla){
case '1':
cout<<endl<< "Opcion 1)Insertar"<<endl;
Z.pideDatos();
system("pause");
break;
case '2':
cout<<endl<< "Opcion 2)Eliminar"<<endl;
Z.eliminar();
system("pause");
break;
case '3':
cout<<endl<< "Opcion 3)Buscar"<<endl;
Z.buscarDato();
system("pause");
break;
case '4':
cout<<endl<< "Opcion 4)Mostar"<<endl;
Z.muestraDatos();
system("pause");
break;
case '5':
Z.modificarDato();
system("pause");
break;
case '6':
cout<< "Hasta Luego :-)";
flag=true;
break;
}
}while(flag!=true);
getch();
return 0;
}