void Simbolo::mostrar(const Lista<char>& figuraMostrar){ Lista<char>::posicion pos = figuraMostrar.primera(); while(pos != figuraMostrar.fin()){ cout << figuraMostrar.elemento(pos); pos = figuraMostrar.siguiente(pos); } cout << endl; }
void inicializaABC(Lista<TipoElemento>& l){ Persona* x; posicion i; int valorClave=1,cuenta=0; for(i=l.primero();cuenta<MAX_ELEMENTOS_LISTA;cuenta++){ cout << "Llenando con clave " << valorClave << endl; x=new Persona(valorClave++,"El "); x->nombre+=intToString(x->clave); x->nombre+="o."; l.inserta(x,i); i=l.siguiente(i); } }
void inicializaABC(Lista<TipoElemento>& l){ Persona x; posicion i; int valorClave=1; i=l.primero(); while(!l.estaLlena()){ cout << "Llenando con clave " << valorClave << endl; x.clave=valorClave++; x.nombre="El "; x.nombre+=intToString(x.clave); x.nombre+="o."; l.inserta(x,i); i=l.siguiente(i); } }
//Funcion privada que realiza todas las simetrias segun la opcion que //le pase, X = simetria eje X, Y = simetria eje Y y A = ambas simetrias Lista<char> Simbolo::simetria(char opcion){ //Lista<char> simetrica(figura); //No funciona bien el constructor de copia de esta reprensentacion Lista<char> simetrica; for(Lista<char>::posicion pos = figura.primera(); pos != figura.fin(); pos = figura.siguiente(pos)){ simetrica.insertar(figura.elemento(pos), simetrica.fin()); } Lista<char>::posicion pos = simetrica.primera(); while(pos != simetrica.fin()){ if(opcion == 'Y' || opcion == 'A'){// A = Ambos if(simetrica.elemento(pos) == 'D'){ simetrica.elemento(pos) = 'I'; } else if(simetrica.elemento(pos) == 'I'){ simetrica.elemento(pos) = 'D'; } } if(opcion == 'X' || opcion == 'A'){// A = Ambos if(simetrica.elemento(pos) == 'B'){ simetrica.elemento(pos) = 'S'; } else if(simetrica.elemento(pos) == 'S'){ simetrica.elemento(pos) = 'B'; } } pos = simetrica.siguiente(pos); } return simetrica; }
int main() { Arreglo arr; Lista lista; int op; do{ cout << "\nIngrese la opcion : "<<endl; cout << "1. Insertar nuevo empleado "<<endl; cout << "2. Inicio "<<endl; cout << "3. Final "<<endl; cout << "4. Siguiente "<<endl; cout << "5. Recuperar "<<endl; cout << "6. Eliminar "<<endl; cout << "7. Mover "<<endl; cout << "8. Imprimir empleados "<<endl; cin>>op; switch(op) { case 1: { int id; string nombre; int pos; cout << "\nIngrese la posicion donde insertar "; cin>>pos; cout << "\nIngrese el codigo de empleado "; cin>>id; cout << "Ingrese el nombre "; cin>>nombre; Nodo *a = new Nodo(id,nombre) ; if(lista.insertar(pos,a)) cout << "\nInsertado exitosamente "<<endl; else cout << "\nNo se pudo insertar "<<endl; } break; case 2: { Nodo* b = lista.ini(); if(b!=NULL) { cout<<"\nEl inicio es: "; cout<<"-----"<<b->emp->id<<" "; cout<<b->emp->nombre<<endl; } else cout<<"\nArreglo vacio"<<endl; } break; case 3: { Nodo* c=lista.fin(); if(c!=NULL) { cout<<"\nEl fin es: "; cout<<"-----"<<c->emp->id<<" "; cout<<c->emp->nombre<<endl; } else cout<<"\nArreglo vacio"<<endl; } break; case 4: { int pos; cout << "\nIngrese la posicion para conocer su siguiente "; cin>>pos; Nodo* c=lista.siguiente(pos); if(c!=NULL) { cout<<"\nEl siguiente de la posicion "<<pos<<" es: "; cout<<"-----"<<c->emp->id<<" "; cout<<c->emp->nombre<<endl; } else cout<<"\nEsta posicion no tiene siguiente"<<endl; } break; case 5: { int p1; cout<<"\nIngrese la posicion a buscar: "; cin>>p1; Nodo * d= lista.recuperar(p1); if(d!=NULL) { cout<<"-----"<<d->emp->id<<" "; cout<<d->emp->nombre<<endl; } else cout<<"No se encuentra, revise parametros"<<endl; } break; case 6: { int p; cout<<"\nIngrese la posicion a eliminar: "; cin>>p; if(lista.eliminar(p)) cout<<"\nEliminado exitosamente"<<endl; else cout<<"\nNo se pudo eliminar, revise los parametros "<<endl; } break; case 7: { int from,to; cout<<"\nIngrese la posicion de procedencia: "; cin>>from; cout<<"\nIngrese la posicion de destino: "; cin>>to; lista.mover(from,to); } break; case 8: { cout<<"\nListando empleados "<<endl; lista.imprimir(); } break; } }while ( op >= 1 && op<=8 ); return 0; }