Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Permutacion{
- int longitud;
- int datos[1000];
- };
- bool ComprobarPermutacion(Permutacion permutacion){
- bool comprobados[permutacion.longitud];
- bool valido = true;
- for(int i=0; i<permutacion.longitud; i++){
- comprobados[permutacion.datos[i]] = true;
- }
- for (int i=1; i<=permutacion.longitud && valido == true; i++){
- if(comprobados[i] == false){
- valido = false;
- }
- }
- return valido;
- }
- Permutacion Composicion(Permutacion p1, Permutacion p2){
- Permutacion permutacion;
- permutacion.longitud = p1.longitud;
- for (int i = 0; i < p1.longitud; i++){
- permutacion.datos[i] = p2.datos[p1.datos[i]-1];
- }
- return permutacion;
- }
- Permutacion Potencia(Permutacion permutacion, int potencia){
- Permutacion nueva_permutacion;
- nueva_permutacion.longitud = permutacion.longitud;
- for (int i = 0; i < permutacion.longitud; i++){
- nueva_permutacion.datos[i] = permutacion.datos[i];
- }
- for (int i = 1; i < potencia; i++){
- nueva_permutacion = Composicion(nueva_permutacion, permutacion);
- }
- return nueva_permutacion;
- }
- int main(){
- Permutacion permutacion;
- Permutacion potencia;
- int exponente;
- bool valido;
- //ENTRADA DATOS
- do{
- cout << "Introduce la longitud de la permutacion: ";
- cin >> permutacion.longitud;
- cout << "Introduce los valores: ";
- for (int i=0; i<permutacion.longitud; i++){
- cin >> permutacion.datos[i];
- }
- valido = ComprobarPermutacion(permutacion);
- }while(valido == false);
- //CÁLCULO
- cout << "\nIntroduce el exponente: ";
- cin >> exponente;
- potencia = Potencia(potencia, exponente);
- //RESULTADO
- cout << "La potencia " << exponente << " de la permutación dada es: ";
- for (int i = 0; i < potencia.longitud; i++){
- cout << potencia.datos[i] << " ";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement