PDA

Visualizza la versione completa : Stampare la riga della matrice che contiene l'elemento più grande


AmedeoFalco
04-06-2017, 18:33
Salve ho questo esercizio che ho risolto in metà mi manca solo da stampare la riga che contiene il numero più grande!! Il mio codice è questo

#include<stdio.h>#include<iostream>
#include<cstdlib>


int main () {


const int N=10;
int row;
int column ;
int a[N][N];

printf("Inserisci numero di righe: ");
scanf("%d",&row);
printf("Inserisci numero colonne: " );
scanf("%d",&column);
for(int i=0;i<row;i++){

for(int j=0;j<column;j++){

printf("Inserisci elmento di a[%d][%d]: ",i,j);
scanf("%d",&a[i][j]);

}
}
printf("\nLa matrice e': \n");
for(int i=0;i<row;i++){


for(int j=0;j<column;j++)


printf("%3d ",a[i][j]);
printf("\n");
}
//Ricerca del massimo valore nella matrice
int max=a[0][0];




for(int i=0;i<row;i++){

for(int j=0;j<column;j++)
if(a[i][j]>max){


max=a[i][j];
}


}
printf("\nL'elemnto piu' grande e': %d",max);


//Ricerca della riga che contiene il massimo valore
//stampiamoa video la riga intesa come riga 1 o riga 2 o riga 3


int maximum=a[0][0];
for(int j=0;j<column;j++){
for(int i=0;i<row;i++)


if(a[i][j]>maximum){
maximum=a[i][j];
row=i;

}


}
printf("\nsi trova nella riga %d" ,row+1);






return 0;

}

il mio problema sta nella parte finale del codice non riesco a far per l'appunto stampare la riga in cui si trova l'elemento più grande(sia il numero di riga che la riga con tutti gli elementi)

scimmiaparlante
04-06-2017, 19:58
int maximum=a[0][0];
for(int j=0;j<column;j++){
for(int i=0;i<row;i++)
if(a[i][j]>maximum){
maximum=a[i][j];
row=i;
}
}


Se sovrascrivi row appena cambi il massimo provvisorio il ciclo è condannato a finire all'iterazione successiva...

Usa un'altra variabile per ricordarti la riga dell'elemento maggiore.


int riga_max = 0;
int maximum=a[0][0];
for(int j=0;j<column;j++){
for(int i=0;i<row;i++)
if(a[i][j]>maximum){
maximum=a[i][j];
riga_max=i;

}
}
printf("\nsi trova nella riga %d" ,riga_max+1);

AmedeoFalco
04-06-2017, 20:10
Grazie @scimmiaparlante per la risposta sei stato utilissimo e se volessi poi stampare tutta la riga compreso il valore più grande tipo:

1 0 1
2 0 2

l'elemnto più grande si si trova nella riga 2
la riga è composta da 2 0 2
(piccolo esempio per rendere l'idea) dammi l'input non la soluzione ci voglio arrivare da solo

scimmiaparlante
04-06-2017, 20:58
dammi l'input non la soluzione ci voglio arrivare da solo
Quando vuoi mostrare tutto stampi a[i][j], che sta per elemento alla riga i-esima, colonna j-esima, per ogni i,j possibile.
Tu il numero della riga lo hai quindi non resta che variare solo gli indici di colonna

Loading