예제 #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
//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;
}