Considere o programa C fornecido abaixo:

#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);
  
} 

Qual é o valor impresso quando este programa é executado?
(A) 9
(B) 8
(C) 7
(D) 6

Resposta: (C)
Explicação: Se você olhar para o loop com cuidado, você notará que ele atribui uma variável de soma a algum valor na condição if e o incrementa na outra doença. Pensando melhor, ficaria claro que esse loop armazena a soma da subsequência crescente de inteiros positivos na variável de soma e o máximo de soma em maxsum. Portanto, maxsum - soma máxima da subsequência crescente de inteiros positivos será impressa quando este programa for executado, que é 3 + 4 = 7.

Esta solução é fornecida por Vineet Purswani

// a saída será 3 + 4 = 7 {para || se o primeiro argumento for verdadeiro, o segundo argumento não será calculado, e se o primeiro argumento for falso, o segundo argumento será calculado}

Outra Solução

Quando i = 1

-> i == 0 é falso, mas a [i] maxsum) é verdadeiro, uma vez que sum = 2 e maxsum = 0.So maxsum = 2. soma = (a [i]> 0)? a [i]: 0; , soma = 0 desde a [i] <0.

Quando i = 2

-> i == 0 é falso, a [i] maxsum) é falso, pois sum = 0 e maxsum = 2. Desde que soma = (a [i]> 0)? a [i]: 0; , soma = 0 desde a [i] <0.

Quando i = 3

-> i == 0 é falsa, a [i] <0 é falsa e a [i] <a [i - 1] é falsa, então a condição (1) é falsa. Agora some + = a [i] = 3.

Quando i = 4

-> i == 0 é falsa, a [i] <0 é falsa e a [i] <a [i - 1] é falsa, então a condição (1) é falsa. Agora some + = a [i] = 7.

Quando i = 5

-> i == 0 é falso, a [i] <0 é falso e a [i] maxsum é verdadeiro, uma vez que sum = 7 e maxsum = 2, então maxsum = 7. Desde soma =

(a [i]> 0)? a [i]: 0, então soma = 2 já que a [5]> 0.

Esta solução foi contribuída por nirmal Bharadwaj
Quiz of this Question

Atenção leitor! Não pare de aprender agora. Pratique o exame GATE bem antes do exame real com os questionários sobre o assunto e gerais disponíveis no curso GATE Test Series .

Aprenda todos os conceitos do GATE CS com aulas gratuitas ao vivo em nosso canal do youtube.