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

Fiind data o matrice avand n linii si n coloane ,sa se afiseze coloanele care reprezinta siruri ordonate crescator si liniile care reprezinta siruri ordonate descrescator.

Răspunsuri la întrebare

Răspuns de RandomDude
1
Programul nu l-am verificat prin rualre, doar l-am scris, dar logica sper sa fie clara :).
Anexe:
Răspuns de Relampago
0
#include <bits/stdc++.h>using namespace std;
ifstream fin("matrice.in");
int n, i, j, a[101][101], cresc[101], desc[101], nr, k;
int main()
{
    //citesc dintr-un fisier n si o matrice de n*n elemente
    fin >> n;
    for (i = 1; i <= n; i++)
        for (j = 1; j <= n; j++)
            fin >> a[i][j];
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= n; j++)
            cout << a[i][j] << " ";
        cout << "\n";
    }
    cout << "Liniile care au siruri descrescatoare sunt: \n";
    bool ok;
    for (i = 1; i <= n; i++)
    {
        ok = 0; //presupun ca nu avem elemente descrescatoare
        for (j = 2; j <= n; j++)
        {
            if (a[i][j - 1] >= a[i][j]) ok = 1; //am gasit element descrescator
            else
            {
                //daca suntem aici inseamna ca am gasit un element care nu convine si nu are rost sa mai continui si trec la urmatoarea linie
                ok = 0;
                break;
            }
        }
        //daca am ajuns aici inseamna ca am gasit linii cu elemente descrescatoare si afisam indicele liniei
        if (ok == 1) //cout<<i<<" ";
            desc[++nr] = i; //bag in vectorul desc indicii liniilor cu elemente descrescatoare    }    //cout<<"Linia "<<i<<": "<<a[j][j]<<" ";
    for (k = 1; k <= nr; k++)
    {
        //parcurg vectorul de indici si apoi matricea verificand daca indicele liniei din matrice corespunde cu indicele din vector si afisez
        cout << "  Linia " << desc[k] << ": ";
        for (i = 1; i <= n; i++)
        {
            for (j = 1; j <= n; j++)
                if (desc[k] == i)
                    cout << a[i][j] << " ";
        }
    }
    nr = 0;
    cout << "\nColoanele care au siruri crescatoare sunt: \n";
    for (j = 1; j <= n; j++)
    {
        ok = 0; //presupun ca nu avem elemente crescatoare
        for (i = 2; i <= n; i++)
        {
            if (a[i - 1][j] <= a[i][j]) ok = 1; //am gasit element crescator
            else
            {
                //daca suntem aici inseamna ca am gasit un element care nu convine si nu are rost sa mai continui si trec la urmatoarea coloana
                ok = 0;
                break;
            }        }
        //daca am ajuns aici inseamna ca am gasit coloane cu elemente crescatoare si afisam indicele coloanei
        if (ok == 1) //cout<<j<<" ";
            cresc[++nr] = j; //bag in vectorul cresc indicii coloanelor cu elemente crescatoare
    }
    for (k = 1; k <= nr; k++)
    {
        //parcurg vectorul de indici si apoi matricea verificand daca indicele coloanei din matrice corespunde cu indicele din vector si afisez
        cout << "  Coloana " << cresc[k] << ": ";
        for (i = 1; i <= n; i++)
        {
            for (j = 1; j <= n; j++)
                if (cresc[k] == j)
                    cout << a[i][j] << " ";
        }
        cout << "\n";
    }
}

Relampago: Eu zic ca vei intelege programul :) .Sterge comentariile dupa ce le citesti si testeaza :D
DanielaP: Da erori :)
Alte întrebări interesante