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:
#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.