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; }
//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; }