###### 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];
}
}
```