edited by
10,692 views
31 votes
31 votes

Consider the C program given below : 

#include <stdio.h>
int main ()    {
    int sum = 0, maxsum = 0,  i,  n = 6;
    int a [] = {2, -2, -1, 3, 4, 2};
    for (i = 0; i < n; i++)    {
            if (i == 0 || a [i]  < 0  || a [i] < a [i - 1])  {
                     if (sum > maxsum) maxsum = sum;
                     sum = (a [i] > 0) ? a [i] : 0;
            }
            else sum += a [i];
    }
    if (sum > maxsum) maxsum = sum ;
    printf ("%d\n", maxsum);

}

What is the value printed out when this program is executed?

  1. $9$
  2. $8$
  3. $7$
  4. $6$
edited by

5 Answers

Best answer
41 votes
41 votes

Answer is C.

$$\begin{array}{|l|l|l|l|l|} \hline \text{i} &  \text{$A[i]$} & \text{for }\rightarrow\text{ if --- satisfied?}  & \text{maxsum} & \text{sum} \\\hline \text{-} &  \text{-} & \text{-}  & 0 & 0  \\\hline 0 &  \text{$A[0]= 2$} & \text{Yes $(i == 0)$}  & 0 & 2 \\\hline 1 &  \text{$A[1]= -2$} & \text{Yes $(a[i] < 0)$}  & 2 & 0   \\\hline 2 &  \text{$A[2]= -1$} & \text{Yes $(a[i] < 0)$}  & \text{(for $\rightarrow$ if $\rightarrow$ if --- not satisfied)} & 0  \\\hline  3 &  \text{$A[3]= 3$} & \text{No (else executed)}  & \text{(for $\rightarrow$ if $\rightarrow$ if --- not satisfied)} & 3  \\\hline 4 &  \text{$A[4]= 4$} & \text{No (else executed)}  & \text{(for $\rightarrow$ if $\rightarrow$ if --- not satisfied)} & 7 \\\hline  5 &  \text{$A[5]= 2$} & \text{Yes $(a[i] < a[i - 1])$}  & 7 & 2 \\\hline \end{array}$$

[End of for loop]

If (sum (i.e., $2$) $ >$ maxsum (i.e., $7$))   // No

                maxsum $=$ sum;   // Not Executed

printf will output maxsum $= 7$

edited by
34 votes
34 votes
The algorithm is finding the maximum sum of the monotonically increasing continuous sequence of positive numbers in the array. So, output would be $3+4 = 7.$
12 votes
12 votes
first of  all  some  synatax  error  in  above  code segment .  right code given  below

# include <stdio.h>
int main ()    {
    int sum = 0, maxsum = 0,  i,  n = 6;
    int a [] = {2, -2, -1, 3, 4, 2};
    for (i = 0; i < n; i++)    {
            if (i == 0 || a [i]  < 0  || a [i] < a [i - 1])  {
                     if (sum > maxsum) maxsum = sum;
                     sum = (a [i] > 0) ? a [i] : 0;
            }
            else
                sum += a [i];
            }
            if (sum > maxsum) maxsum = sum ;
            printf ("%d\n", maxsum);
}

 

 

 

ans  is  C .

simply  execute  and  trace  value of  sum and  maxsum for i=0 to 5

i  -->      initially  0   1   2   3   4     5

sum            0     0   2   0   3    7    2

maxsum     0     0   2   2   2   2    7

so  maxsum  =  7
Answer:

Related questions