c++
Cerinţa
Se consideră tabloul bidimensional cu m linii şi n coloane şi elemente numere naturale. Să se construiască un nou tablou bidimensional cu n linii şi m coloane, obţinut din primul prin rotirea acestuia în sens trigonometric cu 90 o.
Date de intrare
Fişierul de intrare rotire.in conţine pe prima linie numerele m şi n, iar pe următoarele m linii câte n numere naturale separate prin spaţii, reprezentând elementele tabloului.
Date de ieşire
Fişierul de ieşire rotire.out va conţine tabloul nou construit, câte o linie a tabloului pe o linie a fişierului, elementele fiecărei linii fiind separare printr-un spaţiu
Restricţii şi precizări
2≤m,n≤10
elementele tabloului sunt numere naturale mai mici decât 2.000.000.000
Exemplu
rotire.in
4 5
21 22 23 24 25
26 27 28 29 30
31 32 33 34 35
36 37 38 39 40
rotire.out
25 30 35 40
24 29 34 39
23 28 33 38
22 27 32 37
21 26 31 36
//224 de pe pbinfo
Răspunsuri la întrebare
Răspuns de
4
Programul poate arata ceva de genul:
#include <iostream>#include <fstream>
using namespace std;
const int NMAX = 11;int a[NMAX][NMAX];ifstream in("rotire.in");ofstream out("rotire.out");int m,n;
int main(){ in>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) in>>a[i][j]; in.close(); for(int i=n;i>=1;i--) { for(int j=1;j<=m;j++) out<<a[j][i]<<" "; out<<"\n"; } out.close(); return 0;}
/// Daca vrei sa construiesti in memorie un alt tablou pe care sa il afisezi, pur si simplu poti lua doi indicatori k si l care sa specifice unde in tablou sa adaugi.. Initial k = 1,l=1..Cat timp te deplasezi pe coloana in jos in matricea initiala il cresti pe l si cand termini coloane il cresti si pe k ca sa sara in a doua linie in matrice b.. Dimensiunile matricei b vor fi evident n linii si m coloane..
#include <iostream>#include <fstream>
using namespace std;
const int NMAX = 11;int a[NMAX][NMAX];ifstream in("rotire.in");ofstream out("rotire.out");int m,n;
int main(){ in>>m>>n; for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) in>>a[i][j]; in.close(); for(int i=n;i>=1;i--) { for(int j=1;j<=m;j++) out<<a[j][i]<<" "; out<<"\n"; } out.close(); return 0;}
/// Daca vrei sa construiesti in memorie un alt tablou pe care sa il afisezi, pur si simplu poti lua doi indicatori k si l care sa specifice unde in tablou sa adaugi.. Initial k = 1,l=1..Cat timp te deplasezi pe coloana in jos in matricea initiala il cresti pe l si cand termini coloane il cresti si pe k ca sa sara in a doua linie in matrice b.. Dimensiunile matricei b vor fi evident n linii si m coloane..
Răspuns de
2
Am o solutie care pare sa functioneze insa primeste doar 20p pe PBInfo...
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int m,n,i,j;
ifstream fisierin("rotire.in");
fisierin>>m>>n;
int a[m][n];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
fisierin>>a[i][j];
fisierin.close();
ofstream fisierout("rotire.out");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
fisierout<<a[j][m-i]<<" ";
fisierout<<endl;
}
fisierout.close();
}
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
int m,n,i,j;
ifstream fisierin("rotire.in");
fisierin>>m>>n;
int a[m][n];
for(i=0;i<m;i++)
for(j=0;j<n;j++)
fisierin>>a[i][j];
fisierin.close();
ofstream fisierout("rotire.out");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
fisierout<<a[j][m-i]<<" ";
fisierout<<endl;
}
fisierout.close();
}
Alte întrebări interesante
Chimie,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă