예제 #1
0
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;
}
예제 #2
0
void imprimeListaInversa(Lista<TipoElemento>& l){
    posicion p,prim=l.primero();
    cout << "Imprimiendo lista inversa..." << endl;
    if (l.estaVacia()){
        cout << "La lista está vacia";
    }
    else{
        p=l.fin();
        do{
            p=l.anterior(p);
            cout << l.recupera(p)->dameCadena() << endl;
        }while(p!=prim);
    }
}
예제 #3
0
//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;
}
예제 #4
0
void usaListaComputadoras(){
    Lista<Computadora> alpha,beta;
    Lista<Computadora>* gamma;
    Computadora* insertable,buscable("","");
    posicion p;
    cout << "Listas de Computadoras" << endl;
    alpha.fijaNombre("Alpha");
    alpha.fijaEliminaElementos(true);
    beta.fijaNombre("Beta");
    beta.fijaEliminaElementos(true);
    insertable=new Computadora("Toshiba","Alpha");
    alpha.inserta(insertable);
    insertable=new Computadora("HP","Beta");
    alpha.inserta(insertable);
    alpha.imprimeLista();
    insertable=new Computadora("IBM","Gamma");
    beta.inserta(insertable);
    insertable=new Computadora("Apple","Delta");
    beta.inserta(insertable);
    beta.imprimeLista();
    cout << "Concatenando listas..." << endl;
    gamma=alpha.concatenar(beta);
    gamma->imprimeLista();
    cout << "Dime cual busco: " << endl;
    cout << "Marca: ";
    cin >> buscable.marca;
    cout << "Modelo: ";
    cin >> buscable.modelo;
    if ((p=gamma->localiza(&buscable))!=gamma->fin()){
        cout << gamma->recupera(p)->dameCadena() << endl;
    }
    else{
        cout << "No se encontro elemento";
    }
    cout << endl;
    pausar();
    delete gamma;
}
예제 #5
0
void usaListaPersonas(){
    Lista<Persona> alpha,beta;
    Lista<Persona>* gamma;
    Persona *insertable,buscable(0,"");
    posicion p;
    cout << "Listas de Personas" << endl;
    alpha.fijaNombre("Alpha");
    alpha.fijaEliminaElementos(true);
    beta.fijaNombre("Beta");
    beta.fijaEliminaElementos(true);
    insertable=new Persona(1,"Luis");
    alpha.inserta(insertable);
    insertable=new Persona(2,"Alberto");
    alpha.inserta(insertable);
    alpha.imprimeLista();
    insertable=new Persona(3,"Hugo");
    beta.inserta(insertable);
    insertable=new Persona(4,"Paco");
    beta.inserta(insertable);
    beta.imprimeLista();
    cout << "Concatenando listas..." << endl;
    gamma=alpha.concatenar(beta);
    gamma->imprimeLista();
    cout << "Dime cual busco: " << endl;
    cout << "Clave: ";
    cin >> buscable.clave;
    if ((p=gamma->localiza(&buscable))!=gamma->fin()){
        cout << gamma->recupera(p)->dameCadena() << endl;
    }
    else{
        cout << "No se encontro elemento";
    }
    cout << endl;
    pausar();
    cout << "Cuenta de objetos es: " << cuentaObjetos << endl;
    pausar();
    delete gamma;
}
예제 #6
0
파일: main.cpp 프로젝트: jimmybanegas93/TDA
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;
}
예제 #7
0
int main()
{
    Lista lis;
    Persona buscable,insertable,recuperado;
    posicion p;

    imprimirCentrado("TDA Lista con clases","#");
    pausar();
    cout << endl;
    inicializaABC(&lis);
    pausar();
    cout << "Imprimiendo lista:" << endl;
    lis.imprimeLista();
    pausar();
    insertable.clave=26;
    insertable.nombre="El insertado 26 al principio";
    cout << "Tratando de insertar..." << endl;
    lis.inserta(&insertable,lis.primero());
    pausar();
    buscable.clave=5;
    buscable.nombre="Uno con clave 5";
    cout << "Buscando elemento..." << endl;
    lis.imprimeElemento(&buscable);
    cout << endl;
    pausar();
    p=lis.localiza(&buscable);
    cout << "Localizado elemento en posicion p=" << p << "..." << endl;
    pausar();
    cout << "Imprimiendo lo que recibi de posicion" << endl;
    lis.imprimeElemento(lis.recupera(p));
    cout << endl;
    pausar();
    recuperado=*lis.recupera(p);
    cout << "El elemento recuperado es: ";
    lis.imprimeElemento(&recuperado);
    cout << endl;
    pausar();
    cout << "Suprimiendo elemento en posicion p=" << p << endl;
    lis.suprime(p);
    lis.imprimeLista();
    cout << "Insertando al principio de la lista..." << endl;
    lis.inserta(&insertable,lis.primero());
    pausar();
    cout << "Imprimiendo lista:" << endl;
    lis.imprimeLista();
    cout << "Elemento recuperado antes de suprimir de la lista: ";
    lis.imprimeElemento(&recuperado);
    cout << endl << "Eliminando ultimo elemento de la lista" << endl;
    lis.suprime(lis.anterior(lis.fin()));
    pausar();
    lis.imprimeLista();
    cout << "Insertando al final de la lista" << endl;
    insertable.clave=27;
    insertable.nombre="El insertado 27 al final";
    lis.inserta(&insertable,lis.fin());
    pausar();
    lis.imprimeLista();
    pausar();
    imprimeListaInversa(&lis);
    return 0;
}