int create int int creating of massiv void free int int deleting of ma

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
int ** create(int,int); //creating of massiv
void free(int **,int); //deleting of matrix
void initialize(int **,int,int); //input of matrix
void print(int**,int,int); //printing of matrix
int ** turn(int**,int,int,int); //turn mass
int ** turn_left(int**,int,int,int); //turn mass on the left_side
int _tmain()
{
int j=0;
const int n = 4; //number of string
const int m = 4; //number of columns
int **A=create(n,m); //creating of massiv
initialize(A,n,m); //initializing of massiv
print(A,n,m); //array output on the screen
cout<<endl;
//turn of massiv ^___^
int k=n/2; //количество слоев
turn(A,n,m,k); //передаем в функцию параметры-имя массива,размер,количество слоев
cout<<endl;
print(A,n,m); //array output on the screen
turn_left(A,n,m,k); //повторот влево
cout<<endl;
print(A,n,m);
free(A,n); //deleting of matrix
system("pause");
return 0;
}
int** create(int N,int M)
{
int** mas=new int*[N];
for(int i=0;i<N;i++)
mas[i]= new int[M];
return mas;
}
void initialize(int ** mas,int N,int M)
{
for (int i=0;i<N;i++){
for(int j=0;j<M;j++){
mas[i][j]=rand() % 210;
if(i==j)
mas[i][j]=1;
}
}
}
void print(int** mas,int N,int M)
{
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++){
cout<<mas[i][j]<<"\t";
}
cout<<endl;
}
}
void free(int ** mas,int N)
{
for(int i=0;i<N;i++)
delete mas[i];
delete[]mas;
}
int ** turn(int **mas,int N,int M,int k)
{
int b; //variable,which should be used,if you want to save one element of matrix
int i,j;
while(k>0)
{
for(int i=0;i<k;i++)
{
b=mas[i][i];
for(j=i;j<N-i-1;j++)
mas[j][i]=mas[j+1][i]; //левую на 1 вверх
for(j=i;j<M-i-1;j++)
mas[N-i-1][j]=mas[N-i-1][j+1]; //низ на 1 влево
for(j=N-i-1;j>i;j--)
mas[j][M-i-1]=mas[j-1][M-i-1]; //правую на 1 вниз
for(j=M-i-1;j>i+1;j--) //верх на 1 вправо
mas[i][j]=mas[i][j-1];
mas[i][i+1]=b;
}
k--;
}
return mas;
}
int** turn_left(int **mas,int N,int M,int k)
{
int b;
int i,j;
while(k>0)
{
for(i=0;i<k;i++)
{
b=mas[N-i-1][i];
for(j=N-i-1;j>i;j--) //левую на 1 вниз
mas[j][i]=mas[j-1][i];
for(j=i;j<N-1;j++) //верхнюю на один влево
mas[i][j]=mas[i][j+1];
for(j=i;j<M-1-i;j++) //правую на один вверх
mas[j][N-i-1]=mas[j+1][N-i-1];
for(j=M-i-1;j>i+1;j--) //низ на один вправо
mas[N-i-1][j]=mas[N-i-1][j-1];
mas[N-i-1][i+1]=b;
}
k--;
}
return mas;
}