Informatică, întrebare adresată de razvanlozonschi123, 8 ani în urmă

Cerința
Scrieți funcția sumaMinMax care primește ca parametri un tablou unidimensional v format din n elemente și un număr natural n. Funcția va returna un vector cu două elemente, primul element reprezentând cea mai mică sumă formată din exact n-1 elemente dintre cele n ale lui v, iar cel de-al doilea element reprezentând cea mai mare sumă formată din exact n-1 elemente dintre cele n ale lui v.

Restricții și precizări
sumaMinMax primește doi parametri, în această ordine, un tablou unidimensional v și un număr natural n reprezentând numărul de elemente ale lui v
elementele lui v sunt indexate de la 0
sumaMinMax returnează un pointer la int, reprezentând un tablou alocat dinamic în cadrul funcției, tablou cu două elemente cu semnificațiile din cerință
1 ≤ n ≤ 100
1 ≤ v[i] ≤ 50, unde v[i] reprezintă al i-lea element din v



Exemplu
Intrare

5
1 2 3 4 5
Ieșire

10 14
Explicație
10 reprezintă primul element din vectorul returnat, iar 14 reprezintă al doilea element.


#2340

Răspunsuri la întrebare

Răspuns de davidxavid1234
1

Răspuns:

poti incerca sa sortezi vectorul si apoi sa aduni primele n-1 elemente si ultimele n-1 elemente

Explicație:

Răspuns de CinevaFaraNume
2

Răspuns:

int* sumaMinMax(int v[], int n){

int min = -1, max = -1, s = 0, x;

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

       x = v[i];

    s += x;

       if(min == -1 || x < min)min = x;

       if(max == -1 || x > max)max = x;

   }

   int *ret = new int[2];

   ret[0] = s - max;

   ret[1] = s - min;

   return ret;

}

Explicație:

Se poate face foarte usor gasind suma tuturor elementelor si apoi, suma cea mai mare cu n-1 elemente este suma tuturor elementelor - minimul; suma cea mai mica cu n-1 elemente este suma tuturor elementelor - maximul;

Alte întrebări interesante