C++

Заповнення квадратної матриці по спіралі з центру

#include<iostream>
#include<windows.h>
#include<clocale>
using namespace std;

void see(int ,int **);

void main(){

	setlocale(LC_ALL,"Ukrainian_ukraine.1251");

	int n,//ширина або довжина масиву
		numb=1,//для заповнення
		i, j;//лічильники

	cout<<"Заповнення масиву починаючи з центру:\n";
	cout<<"Введiть розмiр масиву(ширина/довжина):\n";
	cin>>n;

	int ** mas=new int *[n];	//
	for(i=0; i<n; i++)			// Створення двовимірного динамічного масиву
		mas[i]=new int [n];		//

	for(int k=0; k<n; k++)		//
		for(int m=0; m<n; m++)	//заповнення масиву
			mas[k][m]=0;		//

	if(n%2==0){
		i=j=n/2-1;
		mas[i][j]=numb++;
		while(true){
			do{
				//Напрям вправo
				system("cls");
				see(n, mas);
				j++;
				mas[i][j]=numb++;
			}
			while((i+j)!=n-1);

			do{
				//напрям вниз
				system("cls");
				see(n, mas);
				i++;
				mas[i][j]=numb++;
			}
			while(i!=j);


			do{
				//напрям вліво
				system("cls");
				see(n, mas);
				if(j==0&&i==n-1)
					goto end;
				j--;
				mas[i][j]=numb++;
			}
			while((i+j)!=n-2);

			do{
				//напрям вгору
				system("cls");
				see(n, mas);
				i--;
				mas[i][j]=numb++;
			}
			while(i!=j);

		}
	}

	else{
		i=j=n/2;
		mas[i][j]=numb++;
		while(true){
			

			do{
				//напрям вниз
				system("cls");
				see(n, mas);
				if(j==n-1&&i==n-1)
					goto end;
				i++;
				mas[i][j]=numb++;
			}
			while(i!=j+1);


			do{
				//напрям вліво
				system("cls");
				see(n, mas);
				j--;
				mas[i][j]=numb++;
			}
			while((i+j)!=n-1);

			do{
				//напрям вгору
				system("cls");
				see(n, mas);
				i--;
				mas[i][j]=numb++;
			}
			while(i!=j);
			do{
				//Напрям вправo
				see(n, mas);				
				j++;
				mas[i][j]=numb++;
			}
			while((i+j)!=n-1);

		}
	}
end:
	system("pause");
}
void see(int n, int **mas){
	system("cls");
	cout<<"Вивiд матрицi пiд час заповнення:\n";
	for(int k=0; k<n; k++){
					cout<<endl<<endl;
					for(int m=0; m<n; m++)
						cout<<mas[k][m]<<"\t";
				}
				Sleep(800);
}
Добавлено: 18 Ноября 2013 01:44:02 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...