###### tags: `code` # c14086028 homework-3 ```cpp= #include<stdio.h> #include<stdlib.h> #include<math.h> #define N 5 #define A 50 void ref(int ,int [],int []); void rot(int ,int [],int []); void refandrot(int,int[],int [],int[]); void rxry(int,int,int[],int[],int[]); int main() { int a[N] = { }; int b[N] = { }; int c[N] = { }; int d[A][N] = { {} }; int e[A][N] = { {} }; /*give value of a[i],b[i],c[i]-b*/ for (int i = 0; i < N; i++) { a[i] = i; b[i] = i; c[i] = i; } /*give value of a[i],b[i],c[i]-e*/ /*print rot-k-b*/ for (int k = 1; k <= N; k++) { rot(k,a,b); printf("rotation-%d\n", k); for (int i = 0; i < N; i++) { printf("%d", a[i]); } printf("\n"); } printf("\n"); /*print rot-k-e*/ /*print ref-k-b*/ for (int k = 0; k <= N; k++) { ref(k, a, b); printf("reflection-%d\n", k); for (int i = 0; i < N; i++) { printf("%d", a[i]); } printf("\n"); } printf("\n"); /*print ref-k-e*/ /*print ref-k -> ror-k+1 -b*/ for (int k = 0; k < N; k++) { refandrot(k,a,b,c); printf("reflection-%d then rotation-%d\n",k,k+1); for (int i = 0; i < N; i++) { printf("%d", a[i]); } printf("\n"); } printf("\n"); /*print ref-k -> ror-k+1 -e*/ /*computer all the arrangement by reflecting then rotating and print out the distinct arrangement of this case-b*/ int q = 0; //printf("ref-5 mean it don't reflect\n\n"); for (int k = 0; k <=N; k++) { for (int j = 1; j <= N; j++) { rxry(k, j, a, b, c); //printf("arrangment(ref-rot)- %d %d is\n ", k, j); for (int w = 0; w < N; w++) { d[q][w] = a[w]; //printf("%d", d[q][w]); } //printf("\n"); q++; } } printf("\n"); for (int a = 0; a < A; a++) { for (int b = 0; b < N; b++) { e[a][b] = 0; } } int g = 0; for (int a = 0; a < A; a++) { int z = 0; for (int h = 0; h < A; h++) { for (int b=0; b < N; b++) { if (e[h][b] == d[a][b]) { g++; } } if (g == 5) { z++; } g = 0; } if (z == 0) { for (int b = 0; b < N; b++) { e[a][b] = d[a][b]; } printf("the distinct arrangment is\n"); for (int b = 0; b < N; b++) { printf("%d",e[a][b]); } printf("\n"); } } /*computer all the arrangement by reflecting then rotating and print out the distinct arrangement of this case-e*/ printf("This result tell us that all the arrangemrnt by reflecting then rotating can be constructed with once rotation or once reflection"); system("pause"); return 0; } void rot(int k,int a[],int b[]) { for (int i = 0; i < N; i++) { a[i] = b[(i + k) % 5]; } } void ref(int k, int a[], int b[]) { if (k == N) { for (int i = 0; i < N; i++) { a[i] = b[i]; } } else { for (int i = 0; i < N; i++) { a[i] = b[(N + k - i + k) % 5]; } } } void refandrot(int k, int a[],int b[],int c[]) { for (int i = 0; i < N; i++) { a[i] = b[(N + k - i + k) % 5]; c[i] = a[i]; } for (int i = 0; i < N; i++) { a[i] = c[(i + k+1) % 5]; } } void rxry(int k, int K, int a[], int b[], int c[]) { if (k == N) { for (int i = 0; i < N; i++) { a[i] = b[i]; c[i] = b[i]; } } else { for (int i = 0; i < N; i++) { a[i] = b[(N + k - i + k) % 5]; c[i] = a[i]; } } for (int i = 0; i < N; i++) { a[i] = c[(i + K) % 5]; } } ```