C++

Заполнение матрицы змейкой

Заполнение квадратной матрицы по спирали натуральными числами и вывода результата на экран:

Решение 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);
}
Теги:
Матрица
Добавлено: 28 Сентября 2013 06:00:11 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...