PDA

Visualizza la versione completa : [C] Massimo di ogni riga della matrice


nadi91
06-06-2010, 18:22
Ciao a tutti, ho una matrice di dimensioni variabili ( nel senso che ogni volta che avvio il programma devo impostare il numero di righe ed il numero di colonne) e devo trovare il valore massimo di ogni riga della matrice. Per il momento riesco a trovare solamente il valore massimo di tutta la matrice, ma non di ogni riga. Qualcuno può aiutarmi? Grazie mille :)

oregon
06-06-2010, 21:20
Che vuoi dire?

nadi91
07-06-2010, 01:53
ho una matrice, devo trovare il numero più grande di ogni riga :

1 2 3
4 5 6
7 8 9 il massimo della riga 1 è 3, il massimo della riga 2 è 6, il massimo della riga 3 è 9.

Dicevo che l'algoritmo della ricerca del valore massimo lo conosco e lo riesco ad applicare a tutta la matrice (quindi in questo caso il programma mi dirà che il valore massimo della matrice è 9), ma adesso il problema è diverso e non so come fare, sai aiutarmi? grazie :D

infinitejustice
07-06-2010, 02:18
Se hai gia un algoritmo in grado di trovare il massimo di una matrice mxn allora applicalo a ciascuna delle m sottomatrici di dimensione (1,n).

oregon
07-06-2010, 09:19
Appunto ... se sai come trovarlo in tutta la matrice, cercare il massimo in una riga è molto più semplice ...

Partiamo dal codice che usi per trovare il massimo nella matrice ... mostralo.

linoma
07-06-2010, 10:03
Forse lui ha il problema che per tutta la radice il valore di ritorno è un solo, ma x tutte le righe invece sarebbero + valori. E' questo il tuo problema?

nadi91
07-06-2010, 10:26
Originariamente inviato da linoma
Forse lui ha il problema che per tutta la radice il valore di ritorno è un solo, ma x tutte le righe invece sarebbero + valori. E' questo il tuo problema?

esatto, perchè pur facendo come mi stanno dicendo gli altri, come faccio a far ritornare tutti i vari valori ? infatti riesco a far ritornare solo il primo valore..


int massimo(matrice mat, int righe, int colonne){ int i, j;
int max= mat[0][0];
for(i=0; i<righe; i++){
for(j=0; j<colonne; j++){
if(mat[i][j]>max)
max=mat[i][j];
}
}
return max;
}

oregon
07-06-2010, 10:39
Se è solo questo il problema, passa un vettore di valori, composto da tanti elementi quante sono le righe della matrice, e in ogni elemento del vettore restituisci il massimo per riga.

Ovviamente la funzione massimo non restituirà più il valore (sarà void) e accetterà come argomento il puntatore al vettore che ti ho detto in cui scriverà i massimi.

nadi91
07-06-2010, 11:09
void massimo(matrice mat, vettore vet, vettore max, int righe, int colonne){
int i, j;
max[0];
mat[0][0];
vet[0];

for(i=0; i<righe; i++){
for(j=0; j<colonne; j++){
if(mat[i][j]>max[i]) max[i]=mat[i][j];
vet[i]=max[i];
}
}
}

ho risolto così e funziona :unz: grazie a tutti per l'aiuto!

oregon
07-06-2010, 11:12
A cosa ti servono le righe

max[0];
mat[0][0];
vet[0];

e il vettore vet ?

Loading