2010 – 7

Si consideri il seguente frammento di programma:

int f(int T[], int D, int k)
{
   int i=0;
   int j=D-1;
   int ris=0;
   while(i < j)
      if(T[i]+T[j] > k) 
      {
         ris+=1;
         j--;
      }
      else
         i++;
   return(ris);
}

main() 
{
   int T[]={-10,-3,-1,1,2,4,5,7,9,10,20,25,31,34};
   printf("num=%d\n", f(T, 14, 25));
}

Cosa viene visualizzato a video dall’esecuzione di main()?


Soluzione: num=4.


La funzione scorre (in modo originale…) il vettore con i due indici i e j e incrementa il risultato quando la somma dei valori corrispondenti è maggiore di 25.

Le coppie che hanno successo sono

  1. (-3, 34)
  2. (-3, 31)
  3. (1, 25)
  4. (7, 20)