The Gateway to Computer Science Excellence
First time here? Checkout the FAQ!
x
+17 votes
1.1k views

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$
asked in Programming by Veteran (22k points)
edited by | 1.1k views

3 Answers

+18 votes
Best answer

Answer: C

I have tried to explain this question in a better way and the explanation is here...

$i$

$A[i]$

for $\rightarrow$ if -----satisfied?

maxsum

sum

-

-

-

$0$

$0$

$0$

$A[0]= 2$

Yes $(i == 0)$

$0$

$2$

$1$

$A[1]= -2$

Yes $(a[i] < 0)$

$2$

$0$

$2$

$A[2]= -1$

Yes $(a[i] < 0)$

--

(for $\rightarrow$ if $\rightarrow$ if -----not satisfied)

$0$

$3$

$A[3]= 3$

No (else executed)

--

(for $\rightarrow$ if $\rightarrow$ if -----not satisfied)

$3$

$4$

$A[4]= 4$

No (else executed)

--

(for $\rightarrow$ if $\rightarrow$ if -----not satisfied)

$7$

$5$

$A[5]= 2$

Yes $(a[i] < a[i - 1])$

$7$

$2$

 

[End of for loop]

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

                maxsum $=$ sum;   // Not Executed

printf will output maxsum $= 7$

 

answered by (191 points)
edited by
ans is c
Thanks, I have written it now.
Great !
+11 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.
answered by Veteran (346k points)
Sir but here in array  the no. is 2,-2,-1,3,4,2. How is it monotonically increasing? I couldn't understand? Please explain a bit about it. Thanks.
How did you know that it is monotonically increasing by looking into question.Is there any standard approach to do such kinds of problems ?
monotonically incresing means to find of set of contigous vaues which has maximum sum

in ques ,

{-2,-1,3,4}  SUM=4

{-1,3,4} SUM=6

{3,4} SUM=7

here maximum sum is 7

HEnce monotonically incresing value is 7
@Arjun Sir,  if the input array contains only negative integers in increasing order (example--9, -8,-7,-3,-2,-1) then output will be 0, is the algorithm  correct in that case?
yes, if there are no positive values sum must be 0.
+10 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
answered by Junior (725 points)
Your answer is correct, but the traced values of sum at i = 0 and i = 1 have been written wrong here. These should be opposite (you may have miss typed).


Quick search syntax
tags tag:apple
author user:martin
title title:apple
content content:apple
exclude -tag:apple
force match +apple
views views:100
score score:10
answers answers:2
is accepted isaccepted:true
is closed isclosed:true

33,711 questions
40,253 answers
114,364 comments
38,875 users