You are on page 1of 2

#include <iostream>

#include<fstream>
#include<iomanip>

/** Fie a o matrice patratica cu n linii.


Sa se construiasca vectorul b cu n*n elemnte obtinute
prin parcurgerea matricei in spirala incepand din coltul stanga sus catre dreapta,
pana in centrul matricei.
p q
1 2 3 4 5 p
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
q 21 22 23 24 25 q
p

b= 1 2 3 4 5 10 15 20 25 24 23 22 21 16 11 6 7 8 9 14 19 18 17 12 13
*/

using namespace std;

void citire(int a[20][20],int &n)


{
ifstream f("date.in");
int i,j;
f>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
f>>a[i][j];
}

void afisare(int a[20][20],int n)


{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<setw(6)<<a[i][j];
cout<<endl;
}
}

void parcurgereInSpirala(int a[20][20],int n, int b[], int &m)


{
int p=0,q=n-1,i;
m=0;
int n2=n*n;
while(m<n2)
{
for(i=p;i<=q;i++) b[m++]=a[p][i];
for(i=p+1;i<=q;i++)b[m++]=a[i][q];
for(i=q-1;i>=p;i--)b[m++]=a[q][i];
for(i=q-1;i>p;i--) b[m++]=a[i][p];
p++; q--;
}
}
void afisareVector(int b[],int m)
{
for(int i=0;i<m;i++)cout<<b[i]<<" ";
}
int main()
{ int a[20][20],n, b[400],m;
citire(a,n);
afisare(a,n);
parcurgereInSpirala(a,n,b,m);
afisareVector(b,m);
return 0;
}

You might also like