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
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;
}
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
Matematică,
9 ani în urmă
Engleza,
9 ani în urmă
Franceza,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă