Thứ Sáu, 5 tháng 2, 2016

Chương trình xuất ma trận theo chiều xoắn ốc.

Chú ý: Xoắn ốc theo chiều xuống, phải, lên trái.

#include<stdio.h>
#include<conio.h>
#define ROW 12
#define COL 12

void Nhapmn(int &m, int &n)
{
do
{
printf("\nNhap hang: ");
scanf("%d", &m);
printf("\nNhap cot: ");
scanf("%d", &n);
} while ((m < 1 || m>12) && (n<1 || n > 12));
}

void MakeSpiral(int a[ROW][COL], int m, int n)
{
int maxhang, maxcot, minhang, mincot, hang, cot;
int check = 0;
maxhang = m - 1;
maxcot = n - 1;
minhang = mincot = 0;
hang = cot = 0;

for (int i = 0; i < m*n; i++)
{
a[hang][cot] = i + 1;
switch (check)
{
case 0:
if (hang < maxhang)
hang++;
else
{
mincot++;
cot++;
check++;
}
break;
case 1:
if (cot < maxcot)
cot++;
else
{
maxhang--;
hang--;
check++;
}
break;
case 2:
if (hang>minhang)
hang--;
else
{
maxcot--;
cot--;
check++;
}
break;
case 3:
if (cot > mincot)
cot--;
else
{
minhang++;
hang++;
check = 0;
}
break;
}
}
}

void xuat(int a[ROW][COL], int m, int n)
{
for (int i = 0; i < m; i++)
{
for (int j = 0; j < n; j++)
printf("\t%d", a[i][j]);
printf("\n");
}
}

void main()
{
int a[ROW][COL], m, n;
Nhapmn(m, n);
MakeSpiral(a, m, n);
xuat(a, m, n);
getch();
}

Không có nhận xét nào:

Đăng nhận xét