Problema massimo colonne

di il
10 risposte

Problema massimo colonne

Ciao ragazzi, sto riscontrando problemi sul calcolo del massimo di ogni colonna, non capisco dove sbaglio, vi mando il codice:

int i;
 int j;

  for (int j=0; j<c; j++){
    max[j]=0;
    for (int i=0; i<r; i++){
        if (mat[i][j]>max[j])
            max[j]=mat[i][j];


    }
  }
 
printf("Il massimo della colonna %d e': %d\n",i+1,max[j]);


   }
vi ringrazio in anticipo.

10 Risposte

  • Re: Problema massimo colonne

    Scusa ma stai facendo un sacco di confusione, vediamo se riesco ad aiutarti:
    1. se cerchi un massimo in una colonna è come cercare un massimo in un vettore (array) e ti basta quindi un solo ciclo for; se fai due cicli for innestati c'è qualcosa che non quadra;
    2. se cerchi un massimo perchè usi un vettore (max[])? Ti basta una variabile ...
    3. se cerchi un massimo lo puoi inizializzare con il primo valore della colonna
    Ci sono altri errori, ma ti suggerisco di riscrivere la funzione con queste note.
    EDIT: ho riletto meglio, stai cercando il massimo per ciascuna colonna, quindi ignora i punti 1. e 2. e allora aggiungo:
    4. inserisci l'ultima printf alla fine del for esterno
  • Re: Problema massimo colonne

    Sono giunto a scrivere una cosa del genere, non va, ma spero di aver quadrato almeno la parte logica.

    int j=0;
    for (int i=0; i<r; i++){
         max=0;
    
    
        if (mat[i][j]=max){
            max=mat[i][j];
            j=j+1;
        }
    
     printf("%d",max);
    
    }
    
    
    }
  • Re: Problema massimo colonne

    Ma sai cosa fa questa linea

    if (mat[j]=max){

    ?
  • Re: Problema massimo colonne

    Errore di battitura, intendevo scrivere >
  • Re: Problema massimo colonne

    Guarda, ho scritto una semplice funzione che determina il massimo in un array:
    #include <stdio.h>
    
    int TrovaMax(int *v, int n)
    {
    	int i;
    	int m;
    
    	m = v[0];
    	for (i = 1; i < n; i++)
    	{
    		if (v[i] > m)
    			m = v[i];
    	}
    
    	return m;
    }
    
    void main(void)
    {
    	int vett[] = { 1,5,-10,23,74,1,20 };
    	int max;
    
    	max = TrovaMax(vett, sizeof(vett) / sizeof(int));
    	printf("Il massimo e' %d\n", max);
    }
    Prova a capirne la logica e quindi implementare la ricerca del massimo sulle colonne di una matrice.
  • Re: Problema massimo colonne

    Ok, fatto così ma non va..
    int i;
    int j;
    int max;
    
    max=mat[0][0];
    
     for (i=0; i<r; i++){
        for (j=0; j<c; j++){
            if (mat[i][j]>max){
                max=mat[i][j];
            }
        }
        return max;
     }
    
      printf("%d",max);
    
    
    
    
    }
  • Re: Problema massimo colonne

    Così stai esaminandi tutto l'array e non una sola colonna

    Il return non ha senso
  • Re: Problema massimo colonne

    Quindi per esaminare colonna per colonna come potrei fare? Devo fissare qualcosa?
  • Re: Problema massimo colonne

    Qualcuno può darmi qualche dritta?
  • Re: Problema massimo colonne

    Pezzi di codice decontestualizzati non ci aiutano molto ad aiutarti, la prossima volta posta il codice per intero.

    In ogni caso se devi trovare il massimo per ogni colonna della matrice, rispetto al post iniziale ti stai allontanando sempre più dalla soluzione.
    Posto il tuo codice, le righe evidenziate sono quelle che devi aggiustare:
    for(int j = 0; j < c; j++)
    {
        max[j] = 0;//***
        for(int i = 0; i < r; i++)//***
        {
            if(mat[i][j] > max[j])
            {
                max[j] = mat[i][j];
            }
        }
        printf("Il massimo della colonna %d e': %d\n", i + 1, max[j]);//***
    }
    Domanda: qual è la dimensione dell'array max?
Devi accedere o registrarti per scrivere nel forum
10 risposte