Заповнення квадратної матриці по спіралі з центру
#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);
}
Комментарии:
Нету комментариев для вывода...