Informatică, întrebare adresată de Dilau420, 8 ani în urmă

PbInfo Spirala1 #1008 C++

Cerința
Se dau n numere naturale, un n este un pătrat perfect. Să se construiască în memorie o matrice pătratică cu toate cele n numere, în spirală, în sens invers acelor de ceas astfel: pe prima coloană, începând cu linia 1, se vor trece primele elemente din şir (de sus în jos), apoi pe ultima linie, începând de la prima coloană până la ultima (de la stânga la dreapta), apoi pe ultima coloană, de la ultima linie la prima (de jos în sus), apoi pe prima linie, de la ultima coloană la prima (de la dreapta la stânga) şamd.

Date de intrare
Fișierul de intrare spirala1.in conține pe prima linie numărul n, iar pe următoarea linie cele n numere.

Date de ieșire
Fișierul de ieșire spirala1.out va conține matricea construită, câte o linie a matricei pe o linie a fişierului, elementele fiecărei linii fiind separate prin exact un spaţiu.

Restricții și precizări
1 ≤ n ≤ 10000
numerele date vor fi mai mici decât 1000

Răspunsuri la întrebare

Răspuns de pmarian98
7

#include<bits/stdc++.h>

using namespace std;

ifstream fin("spirala1.in");

ofstream fout("spirala1.out");

int main()

{

int a[101][101],n,i,j,k,x;

fin>>n;

n=sqrt(n);

for(k=1;k<=(n+1)/2;k++)

{

 for(i=k;i<=n+1-k;i++) fin>>a[i][k];

 for(j=k+1;j<=n+1-k;j++) fin>>a[n+1-k][j];

 for(i=n-k;i>=k;i--) fin>>a[i][n+1-k];

 for(j=n-k;j>k;j--) fin>>a[k][j];

}

for(i=1;i<=n;i++)

{

 for(j=1;j<=n;j++) fout<<a[i][j]<<" ";

 fout<<endl;

}

fin.close();

fout.close();

return 0;

}

Alte întrebări interesante