#include "pch.h"
#include <io.h>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <iomanip>
using namespace std;
int main()
{
int height(0), width(0), corner(0), direction(0), entryPoint(0);
int number, numberAction;
int n = 0;
int key = 1;
int code;
int mas[12][12];
int i, j;
for (i = 0; i < 11; i++)
{
for (j = 0; j < 11; j++)
{
mas[i][j] = 0;
}
}
do
{
cout « "Введите количество строк" "\n";
cin » width;
cout « endl;
} while ((width < 1) || (width > 12));
do
{
cout « "Введите количество столбцов" "\n";
cin » height;
cout « endl;
} while ((height < 1) || (height > 12));
do
{
n = 0;
cout « "Спираль снаружи по часовой стрелке";
if (key == 1) cout « "<==";
cout « endl;
cout « "Спираль снаружи против часовой стрелки";
if (key == 2) cout « "<==";
cout « endl;
cout « "Спираль изнутри против часовой стрелки";
if (key == 3) cout « "<==";
cout « endl;
cout « "Спираль изнутри по часовой стрелке ";
if (key == 4) cout « "<==";
cout « endl;
if (key == 1 || key == 2)
{
entryPoint = 1;
}
else if (key == 3 || key == 4)
{
entryPoint = 2;
}
if (key == 1 || key == 3)
{
direction = 2;
}
else if (key == 2 || key == 4)
{
direction = 1;
}
if (entryPoint == 1)
{
number = 1;
numberAction = 1;
}
else {
number = width * height;
numberAction = -1;
}
do
{
if (direction == 1)
{
for (int i = 0 + n; i < width - n; i++)
{
mas[i][n] = number;
number += numberAction;
}
}
else
{
for (int i = width - n - 1; i > -1 + n; i--)
{
mas[i][n] = number;
number += numberAction;
}
}
if (number < width*height + 1 && number > 0) {
for (int i = 1 + n; i < height - n; i++)
{
if (direction == 1) {
mas[width - n - 1][i] = number;
}
else {
mas[n][i] = number;
}
number += numberAction;
}
}
if (number < width*height + 1 && number > 0) {
if (direction == 1)
{
for (int i = width - n - 2; i > 0 + n; i--)
{
mas[i][height - n - 1] = number;
number += numberAction;
}
}
else
{
for (int i = 1 + n; i < width - n - 1; i++)
{
mas[i][height - n - 1] = number;
number += numberAction;
}
}
}
if (number < width*height + 1 && number > 0) {
for (int i = height - n - 1; i > 0 + n; i--)
{
if (direction == 1) {
mas[n][i] = number;
}
else {
mas[height - n - 1][i] = number;
}
number += numberAction;
}
}
n++;
} while (number < width*height + 1 && number > 0);
cout « endl;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < height; j++)
{
}
cout « "\n";
}
code = _getch();
switch (code)
{
case 49:
key = 1;
break;
case 50:
key = 2;
break;
case 51:
key = 3;
break;
case 52:
key = 4;
break;
case 224:
code = _getch();
if (code == 72 && key > 1)
{
key--;
}
else if (code == 72 && key == 1)
{
key = 4;
}
else if (code == 80 && key < 4)
{
key++;
}
else if (code == 80 && key == 4)
{
key = 1;
}
break;
default:
break;
}
} while (code != 27);
return 0;
}