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

Se dă o matrice cu n linii şi m coloane şi elemente numere naturale. Să se ordoneze liniile matricei crescător după suma elementelor.


MihaiChirculete: cam putine puncte totusi

Răspunsuri la întrebare

Răspuns de MihaiChirculete
6
#include <iostream>

using namespace std;

// functie ce interschimba linia "l1" cu linia "l2" din matricea "m" cu "c" coloane
// folosind metoda paharelor
void interschimbaLinie(int m[][100], int l1, int l2, int c)
{
    int aux;

    for(int i=0; i<c; i++)
    {
        aux = m[l1][i];
        m[l1][i] = m[l2][i];
        m[l2][i] = aux;
    }
}

int main()
{
    int n, m, i, j, mat[100][100];

    // vom folosi un vector pentru a retine suma elementelor de pe fiecare linie a matricii
    int sLinie[100];

    // ex: sLinie[5] va contine suma elementelor de pe linia 5

    cout << "Numarul de linii: "; cin >> n;
    cout << "Numarul de coloane: "; cin >> m;

    // citim matricea
    for(i=0; i<n; i++)
    {
        cout << "Introduceti elementele de pe linia " << i+1 << " : ";
        for(j=0; j<m; j++)
            cin >> mat[i][j];
    }

    // calculam suma pe fiecare linie
    for(i=0; i<n; i++)
    {
        // initializam suma liniei cu 0
        sLinie[i]=0;
        
        // adaugam fiecare element de pe linie la suma
        for(j=0; j<m; j++)
            sLinie[i] += mat[i][j];
    }

    // interschimbam liniile astfel:
    // daca suma de pe linia pe care ne aflam este mai mare decat
    // suma liniei urmatoare, le interschimbam
    for(i=0; i<n-1; i++)
        for(j=i+1; j<n-1; j++)
            if(sLinie[i] > sLinie[j]) interschimbaLinie(mat, i, j, m);


    // afisam matricea
    for(i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
            cout << mat[i][j] << " ";

        cout << "\n";
    }

    return 0;
}
Alte întrebări interesante