Informatică, întrebare adresată de m1234, 9 ani în urmă

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 Slevy
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..
Răspuns de ardyarde
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();
}
Alte întrebări interesante