Ciao ragazzi, sono sempre io e ho sempre problemi con queste funzioni ahaha perdonatemi
scrivere una funzione che riceva in input una matrice bidimensionale di numeri double e ne ordini le righe
in ordine crescente sulla base del valore del primo elemento di riga.
#include <iostream>
using namespace std;
void leggiM(double** M, const int righe, const int colonne)
{
for (int i=0; i<righe;i++)
for (int j=0; j<colonne;j++)
{
cout << "M[" << i << "][" << j << "] = ";
cin >> M[i][j];
}
}
void stampaM(double** M, const int righe, const int colonne)
{
for (int i=0; i<righe;i++)
{
for (int j=0; j<colonne;j++)
cout << M[i][j] << " ";
cout << endl;
}
}
void ordina(double** M, int righe)
{
bool ordinato;
do{
ordinato=true;
for (int i=0; i<righe-1;i++)
if (M[i][0]>M[i+1][0])
{
double temp = M[i][0];
M[i][0] = M[i+1][0];
M[i+1][0] = temp;
ordinato = false;
}
}while(ordinato==false);
return;
}
int main()
{
int righe;
int colonne;
double ** M = 0;
cout << "inserisci il numero di righe e di colonne: ";
cin >> righe >> colonne;
M = new(nothrow) double*[righe];
for (int i = 0; i<righe;i++)
M[i]= new(nothrow) double[colonne];
leggiM(M,righe,colonne);
cout << "la matrice è: " << endl;
stampaM(M,righe,colonne);
ordina(M,righe);
cout << "la matrice ordinata è: " << endl;
stampaM(M,righe,colonne);
return 0;
}
il mio problema è che quando vado a stampare mi ordina solo il primo elemento di riga e non tutta la riga..
inserisci il numero di righe e di colonne: 3
3
M[0][0] = 7.1
M[0][1] = 3.1
M[0][2] = 2.4
M[1][0] = 5.2
M[1][1] = 4.4
M[1][2] = 6.7
M[2][0] = 2.1
M[2][1] = 9.1
M[2][2] = 3.8
la matrice è:
7.1 3.1 2.4
5.2 4.4 6.7
2.1 9.1 3.8
la matrice ordinata è:
2.1 3.1 2.4
5.2 4.4 6.7
7.1 9.1 3.8