Заполнение матрицы змейкой
Заполнение квадратной матрицы по спирали натуральными числами и вывода результата на экран:
Решение 1
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int const n=11;
int A[n][n];
int i=1,j,k,p=n/2;
for(k=1;k<=p;k++)/*Цикл по номеру витка*/
{
for (j=k-1;j<n-k+1;j++) A[k-1][j]=i++;/*Определение значений верхнего гор столбца*/
for (j=k;j<n-k+1;j++) A[j][n-k]=i++;/* --//-- По правому вертикальному столбцу*/
for (j=n-k-1;j>=k-1;--j) A[n-k][j]=i++;/* --//-- по нижнему горизонтальному столбцу*/
for (j=n-k-1;j>=k;j--) A[j][k-1]=i++;/* --//-- по левому вертикальному столбцу*/
}
if (n%2==1) A[p][p]=n*n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf(" %4d ",A[i][j]);
if(j==n-1) printf("
");
}
}
Решение 2
#include <iostream>
#include <iomanip> // расширение функционала iostream,
// в частности setw()
using namespace std;
int main()
{
int const n=5;
int const m=4;
int Arr[n][m];
int i=0, j, k = 0, p=1;
while (i < n*m) /*Цикл по номеру витка*/
{
k++;
for (j=k-1;j<m-k+1;j++)
{
Arr[k-1][j]=p++;
i++;
} /*Определение значений верхнего гор столбца*/
for (j=k;j<n-k+1;j++)
{
Arr[j][m-k]=p++;
i++;
} /* --//-- По правому вертикальному столбцу*/
for (j=m-k-1;j>=k-1;j--)
{
Arr[n-k][j]=p++;
i++;
} /* --//-- по нижнему горизонтальному столбцу*/
for (j=n-k-1;j>=k;j--)
{
Arr[j][k-1]=p++;
i++;
} /* --//-- по левому вертикальному столбцу*/
}
for (int q=0; q<n; q++)
{
for (int w=0; w<m; w++)
{
cout << setw(4) << Arr[q][w];
};
cout << endl;
}
return(0);
}
Комментарии:
Нету комментариев для вывода...