Salve di nuovo a tutti!
data la mia inesperienza totale col C++ (e programmazione in se) sono di nuovo qui a rompervi le scatole!
Devo ordinare una matrice a seconda del numero iniziale di zeri.
Ovvero, le righe con maggior numero di zeri (partendo dalle colonne di sinistra) devono essere spostate verso il basso mentre quelle senza zeri, verso l'alto.
Questa è l'ottava ora consecutiva che sto facendo tentativi, scrivendo progetti che però collassano dopo poco, perchè viene sempre fuori "qualcosa di più", che la mia inesperienza non mi fa vedere in anticipo.
dunque, dopo otto ore (sono praticamente fuso), credo di aver trovato una soluzione abbastanza razionale (almeno per me)
Ho dichiarato e riempito una matrice[righe][colonne], ho costruito un array[colonne]. Ho scritto un codice (che a breve vi mostrerò) dove conteggio gli zeri di ogni riga della matrice, e metto dentro ad ogni elemento dell'array il numero di zeri corrispondente a quella riga della matrice.
Ad esempio:
se nella prima riga della matrice ho 3 zeri, nel primo elemento del vettore viene scritto 3 e così via...
# include <iostream>
# include <stdlib.h>
using namespace std;
double disordinata[4][4] = {
{0,0,0,1},
{0,0,3,1},
{1,1,1,1},
{0,-2,1,2},
};
double ordinata[4][4];
int contazeri=0;
int vettoreContazeri[4];
int indiceVettoreContazeri=0;
int main()
{
for (int i=0; i< 4; i++)
{
for (int j=0; i< 4; j++)
{
if (disordinata[i][j] == 0)
{
contazeri++;
}
else
{
vettoreContazeri[indiceVettoreContazeri] = contazeri;
contazeri = 0;
indiceVettoreContazeri++;
break;
}
}
}
for(int i = 0; i<4; i++)
{
cout << vettoreContazeri[i];
}
}
Sono più che convinto che il codice sia ridicolo a gli occhi programmatori serio.
La mia idea però era questa:
Ordinare gli elementi dell'array in ordine decrescente e allo stesso tempo fare le stesse operazioni tra le righe della matrice, magari spostandole in un'altra matrice (tenendo traccia delle varie permutazioni ma questo non è un problema)
Come posso fare?
Riuscite a darmi una mano?
Grazie mille in anticipo!
Ciao a tutti