Advertisement
Guest User

Untitled

a guest
Nov 17th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.91 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. struct Permutacion{
  6.     int longitud;
  7.     int datos[1000];
  8. };
  9.  
  10. bool ComprobarPermutacion(Permutacion permutacion){
  11.     bool comprobados[permutacion.longitud];
  12.     bool valido = true;
  13.    
  14.     for(int i=0; i<permutacion.longitud; i++){
  15.         comprobados[permutacion.datos[i]] = true;
  16.     }
  17.    
  18.     for (int i=1; i<=permutacion.longitud && valido == true; i++){
  19.         if(comprobados[i] == false){
  20.             valido = false;
  21.         }
  22.     }
  23.    
  24.     return valido; 
  25. }
  26.  
  27. Permutacion Composicion(Permutacion p1, Permutacion p2){
  28.     Permutacion permutacion;
  29.     permutacion.longitud = p1.longitud;
  30.    
  31.     for (int i = 0; i < p1.longitud; i++){
  32.         permutacion.datos[i] = p2.datos[p1.datos[i]-1];
  33.     }
  34.    
  35.     return permutacion;
  36. }
  37.  
  38. Permutacion Potencia(Permutacion permutacion, int potencia){
  39.     Permutacion nueva_permutacion;
  40.     nueva_permutacion.longitud = permutacion.longitud;
  41.    
  42.     for (int i = 0; i < permutacion.longitud; i++){
  43.         nueva_permutacion.datos[i] = permutacion.datos[i];
  44.     }
  45.    
  46.     for (int i = 1; i < potencia; i++){
  47.        nueva_permutacion = Composicion(nueva_permutacion, permutacion);
  48.     }
  49.    
  50.     return nueva_permutacion;
  51. }
  52. int main(){
  53.    
  54.     Permutacion permutacion;
  55.     Permutacion potencia;
  56.     int exponente;
  57.     bool valido;
  58.    
  59.    
  60.     //ENTRADA DATOS
  61.    
  62.     do{
  63.         cout << "Introduce la longitud de la permutacion: ";
  64.         cin >> permutacion.longitud;
  65.        
  66.         cout << "Introduce los valores: ";
  67.         for (int i=0; i<permutacion.longitud; i++){
  68.             cin >> permutacion.datos[i];
  69.         }
  70.        
  71.         valido = ComprobarPermutacion(permutacion);
  72.        
  73.     }while(valido == false);
  74.  
  75.    
  76.     //CÁLCULO     
  77.     cout << "\nIntroduce el exponente: ";
  78.     cin >> exponente;
  79.    
  80.     potencia = Potencia(potencia, exponente);
  81.    
  82.     //RESULTADO
  83.     cout << "La potencia " << exponente << " de la permutación dada es: ";
  84.     for (int i = 0; i < potencia.longitud; i++){
  85.         cout << potencia.datos[i] << " ";
  86.     }
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement