Pagini recente » Cod sursa (job #1579405) | Cod sursa (job #2397593) | Cod sursa (job #2579927) | Cod sursa (job #1800501) | Cod sursa (job #1655178)
#include <iostream>
#include <fstream>
using namespace std;
int a[100][100]={};
int l,n,x;
void bordura()
{
for(int i=0; i<=n+1; ++i)
a[i][0]=-1;
for(int j=0; j<=n; ++j)
a[0][j]=-1;
for(int i=0; i<=n+1; ++i)
a[i][n+1]=-1;
for(int j=0; j<=n; ++j)
a[n+1][j]=-1;
for(int i=1; i<=n; ++i)
{
for(int j=1; j<n; ++j)
{
a[i][j]=0;
}
}
}
void lr(int &i, int &j, int s)
{
while(a[i][j]==0)
{
a[i][j]=x;
x+=s;
++j;
}
--j,++i;
}
void rl(int &i, int &j, int s)
{
while(a[i][j]==0)
{
a[i][j]=x;
x+=s;
--j;
}
++j,--i;
}
void ud(int &i, int &j, int s)
{
while(a[i][j]==0)
{
a[i][j]=x;
x+=s;
++i;
}
--i,--j;
}
void du(int &i, int &j, int s)
{
while(a[i][j]==0)
{
a[i][j]=x;
x+=s;
--i;
}
++i,++j;
}
void spirala(int i, int j, int s)
{
lr(i,j,s);
ud(i,j,s);
rl(i,j,s);
du(i,j,s);
}
void afisare()
{
for(int i=0; i<=n+1; i++)
{
for(int j=0; j<=n+1; j++)
{
cout<<a[i][j]<<" ";
}
cout<<"\n\n\n";
}
}
int main()
{
cin>>n;
int i,j;
bordura();
l=n*n;
x=1,i=1,j=1;
for(int k=1; k<=n; k++)
{
if(k%2==1)
{
i=1,j=1;
//while(x<l)
//{spirala(i,j,1),cout<<1;}
afisare(); cout<<"\n\n";
bordura();
}
else
{
i=1,j=1;
x=x+n*n-1;
while(x>l)
spirala(i,j,-1);
l+=(n*n);
x++;
afisare(); cout<<"\n\n";
bordura();
}
}
return 0;
}