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

VA ROOOG MULT!
E PROBLEMA #786 DE PE pbinfo.ro(MatSim)
in C++


Cerinţa
Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Să se construiască o matrice care să fie simetrica față de diagonala principală a matricei date.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n*n numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.

Date de ieşire
Programul afișează pe ecran elementele matricei construite, câte un linie a matricei pe o linie a ecranului, elementele de pe o linie fiind separate prin câte un spațiu.

Restricţii şi precizări
1 ≤ n ≤ 100
elementele matricei vor fi mai mici decât 1.000.000
două matrice A și B sunt simetrice față de diagonala principală dacă A[i,j]=B[j,i], pentru orice i,j.

Exemplu
Date de intrare

4
3 1 8 5
7 8 5 1
2 2 6 7
9 8 1 3
Date de ieșire

3 7 2 9
1 8 2 8
8 5 6 1
5 1 7 3Cerinţa
Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Să se construiască o matrice care să fie simetrica față de diagonala principală a matricei date.

Date de intrare
Programul citește de la tastatură numărul n, iar apoi n*n numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.

Date de ieşire
Programul afișează pe ecran elementele matricei construite, câte un linie a matricei pe o linie a ecranului, elementele de pe o linie fiind separate prin câte un spațiu.

Restricţii şi precizări
1 ≤ n ≤ 100
elementele matricei vor fi mai mici decât 1.000.000
două matrice A și B sunt simetrice față de diagonala principală dacă A[i,j]=B[j,i], pentru orice i,j.

Exemplu
Date de intrare

4
3 1 8 5
7 8 5 1
2 2 6 7
9 8 1 3
Date de ieșire

3 7 2 9
1 8 2 8
8 5 6 1
5 1 7 3

Răspunsuri la întrebare

Răspuns de stefaniamar
13
okii
Problema, ca enunt, pare destul de chill
Parcurgi matricea, si interschimbi elementele ce-s simetrice conform regulii ce o ai in enunt
Dar, problema e, ca daca o sa parcurgi toata matricea, o sa interschimbi perechile simetrice de doua ori, ceea ce inseamna ca in final matricea afisata o sa fie identica cu cea citita
Asa ca, trebuie sa parcurgi numai elementele ce se afla sub/ deasupra diagonalei principale, aka elemente ce au indicele liniei (i) mai mare decat indicele coloanei (j) (asta daca iau elementele de sub diagonala)

here, have a look at the code


#include <iostream>

using namespace std;
int n,a[100][100],i,j,aux;
int main()
{
    cin>>n;
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
            cin>>a[i][j];
    }
    for (i=0;i<n;i++)
    {
        for (j=0;j<i;j++)
        {
            aux=a[i][j];
            a[i][j]=a[j][i];
            a[j][i]=aux;
        }
    }
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
            cout<<a[i][j]<<' ';
        cout<<endl;
    }
    return 0;
}

infomatrix: multumesc:))
stefaniamar: cu placere ^_^
Alte întrebări interesante