GATE | Gate IT 2007 | Questão 31
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.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva