Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Stampare la riga della matrice che contiene l'elemento più grande

    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
    codice:
    #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)

  2. #2
    codice:
    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.

    codice:
    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);

  3. #3
    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
    Ultima modifica di AmedeoFalco; 04-06-2017 a 19:15

  4. #4
    Quote Originariamente inviata da AmedeoFalco Visualizza il messaggio
    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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.