Untitled

 avatar
unknown
plain_text
a month ago
1.2 kB
3
Indexable
/*
Scrivere un sottoprogramma che riceve in ingresso un array di interi v, un intero k e qualsiasi altro parametro ritenuto necessario. Il sottoprogramma
calcola e restituisce il massimo della somma di k elementi contigui dell’array. Nel caso in cui il numero degli elementi nell’array è inferiore a k il
sottoprogramma restituisce la somma degli elementi presenti nell’array.
Esempio:
Ricevendo in ingresso
v = [1 2 -4 1 3 -5 2 10 -1 0]
k = 7
esistono quattro possibili somme di 7 elementi contigui e il valore massimo restituito dal sottoprogramma è pari a 10.
*/
#include <stdio.h>

int massimaSomma(int *v, int k, int dim)
{
    if(dim<=k)
    {
        int somma=0;
        for(int i=0; i<dim; i++)
        {
            somma+=v[i];
        }
        return somma;
    }
    
    int sommaCorrente = 0;
    for(int i=0; i<k; i++)
    {
        sommaCorrente+=v[i];
    }
    
    int massimo = sommaCorrente;
    

    for(i=k; i<dim; i++)
    {
        sommaCorrente = sommaCorrente + v[i] - v[i-k];
        
        if(sommaCorrente > massimo)
        {
            massimo = sommaCorrente;
        }
    }
    
    return massimo;
}

int main() {
    // Write C code here
    printf("Try programiz.pro");

    return 0;
}
Leave a Comment