[RISOLTO][C] Massimo e somma array 2D

di Anonimizzato20665 il
14 risposte
Devo scrivere una function che ha come input un array 2D e mi restituisca il massimo tra le somme degli elementi di ogni colonna. Ho pensato di scrivere l'algoritmo in questo modo, è corretto?
int max_somma_col_array2D (int a[][100], int n, int m)
{
    int s, max, i, j;
    s = 0;
    max = s;
    for (j=0; j<m; j++)
        for (i=0; i<n; i++)
        s = s + a[i][j];
    if (s > max)
        max = s;
    return max;
}

14 Risposte

  • No, così sommi tutto l'array, non le colonne
  • Quindi per sommare solo le colonne devo fare un solo ciclo for su j e poi s=s+a [j]?
  • E comunque non ha senso mettere if(s>max) perché max è 0, quindi s è sempre maggiore, a meno che tutto l'array contenga 0, in tal caso ritorni sempre s che è 0
  • Quindi come devo scrivere l'algoritmo?
  • If(s>max) devi includerlo nel for grande, e nel if ci devi mettere pure s=0;

    Edit

    s=0 lo devi mettere nel for grande, non nell'if, altrimenti l'azzera solo è è maggiore di max, invece deve azzerarsi sempre
  • Stavo pensando di mettere le somme di ogni colonna in un array monodimensionale e poi calcolare il massimo su quest'array. Mi sembra più semplice farlo in questo modo, che dite?
  • No non serve. Basta fare come ti ho detto. L'ho provato ieri e funziona
    Perché sennò devi mettere un altro ciclo e un array inutili
  • Ok sto provando a farlo. Ma l'if quindi lo devo mettere prima del for sulla i o dopo?
  • Devi mettere le graffe nel primo for, e poi includere al suo interno if e s=0, però entrambi alla fine e in questo ordine
  • Quindi dovrebbe venire così giusto?
    int s, max, i, j;
        max = 0;
        for (j=0; j<m; j++)
        {
            for (i=0; i<n; i++)
            s = s + a[i][j];
            if (s > max)
                max = s;
            s = 0;
        }
        return max;
  • Si
  • Ho inserito la function in un main per provare però non mi viene il risultato. Qualunque array costruisco esce sempre 6316722
  • Devi inizializzare s=0 credo, sennò ci sarà qualche probkema da qualche altra parte
  • Ok così funziona. Grazie mille
Devi accedere o registrarti per scrivere nel forum
14 risposte