矩陣的“回”形列印
阿新 • • 發佈:2018-12-13
#include <iostream>
using namespace std;
void square_print(int **a, int x_temp1, int y_temp1, int x_temp2, int y_temp2)
{
if(x_temp1 == x_temp2)
{
for(int i = y_temp1; i <= y_temp2; i++)
cout << a[x_temp1][i] << ' ';
return ;
}
if(y_temp1 == y_temp2)
{
for(int i = x_temp1; i <= x_temp2; i++)
cout << a[i][y_temp1] << ' ';
return ;
}
//?????
for(int i = y_temp1; i < y_temp2; i++)
cout << a[x_temp1][i] << ' ';
for(int i = x_temp1; i < x_temp2; i++)
cout << a[i][y_temp2] << ' ';
for(int i = y_temp2; i > y_temp1; i--)
cout << a[x_temp2][i] << ' ';
for(int i = x_temp2; i > x_temp1; i--)
cout << a[i][y_temp1] << ' ';
}
int main()
{
cout << "please input rows and columns: ";
int rows, columns; cin >> rows >> columns;
int **nums = new int *[rows];
for(int i = 0; i < rows; i++)
nums[i] = new int [columns];
cout << "please input the data: ";
for(int i = 0; i < rows; i++)
{
for(int ii = 0; ii < columns; ii++)
{
cin >> nums[i][ii];
}
}
cout << "the row data is: " << endl;
for(int i = 0; i < rows; i++)
{
for(int ii = 0; ii < columns; ii++)
{
cout << nums[i][ii] << ' ';
}
cout << endl;
}
cout << "the output data is: " << endl;
int x_temp1 = 0, y_temp1 = 0, x_temp2 = rows - 1, y_temp2 = columns - 1;
while(x_temp1 <= x_temp2 && y_temp1 <= y_temp2)
{
square_print(nums, x_temp1, y_temp1, x_temp2, y_temp2);
x_temp1++; y_temp1++; x_temp2--; y_temp2--;
}
delete [] nums;
system("pause");
return 0;
}