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

URGENT!!!!!!!!!!!!!!!!!! Se da o matrice de m x n. Sa se ordoneze liniile in functie de ultimul element de pe fiecare linie.Dau coroana!va rog

Răspunsuri la întrebare

Răspuns de andriesboss92
0

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int m, n;

   cin >> m >> n;

   // m linii, n coloane

   int a[m][n];

   for(int i = 0; i < m; i++ )

       for(int j = 0; j < n; j++ )

           cin >> a[i][j];

   for(int i = 0; i < m; i++ )

   {

       for(int j = i+1; j < m; j++ )

           if( a[i][n-1] > a[j][n-1] )

           {

               int aux[n];

               for(int k = 0; k < n; k++ )

                  {

                       aux[k] = a[i][k];

                       a[i][k] = a[j][k];

                       a[j][k] = aux[k];

                  }

           }

   }

   cout << endl;

   for(int i = 0; i < m; i++ )

   {

       for(int j = 0; j < n; j++ )

           cout << a[i][j] << " ";

       cout<<endl;

   }

}

Explicație:

In imaginea de mai jos am explicat cum se interschimba primele doua linii ale matricii:

m = 3

n = 4

10 20 30 8

19 21 40 0

7 80 23 -2

Dupa ce a verificat prima linie cu a doua, va verifica daca noul numar de la finalul primei linii ( daca este cazul ) este mai mare decat ultimul numar de pe linia a treia, a patra pana la linia m.

Dupa care va verifica daca ultimul element liniei cu numarul 2 este mai mare decat cel de pe linia 3 si tot asa mai departe realizandu-se interschimbari pana cand variabila i ajunge sa indeaplineasca conditia din for si anume i < m.

Anexe:
Alte întrebări interesante