PUERTA | Puerta TI 2007 | Pregunta 31

Considere el programa C dado a continuación:

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

¿Cuál es el valor impreso cuando se ejecuta este programa?
(A) 9
(B) 8
(C) 7
(D) 6

Respuesta: (C)
Explicación: si busca el ciclo cuidadosamente, notará que asigna la variable de suma a algún valor en la condición if y lo incrementa en el else condición. Pensándolo mejor, quedaría claro que este bucle almacena la suma de la subsecuencia creciente de enteros positivos en la variable suma y el máximo de la suma en la suma máxima. Por lo tanto, maxsum: la suma máxima de la subsecuencia creciente de enteros positivos se imprimirá cuando se ejecute este programa, que es 3 + 4 = 7.

Esta solución es aportada por Vineet Purswani

//la salida será 3+4 =7 {para || si el primer argumento es verdadero, el segundo argumento no se calculará y si el primer argumento es falso, el segundo argumento se calculará}

Otra solución

cuando i=1

-> i==0 es falso, pero a[i] maxsum) es verdadero, ya que sum=2 y maxsum=0. Entonces maxsum=2. suma = (a [i] > 0) ? una [yo] : 0; , suma=0 ya que a[i]<0.

cuando i=2

-> i==0 es falso, a[i] maxsum) es falso, ya que sum=0 y maxsum=2.Since sum = (a [i] > 0) ? una [yo] : 0; , suma=0 ya que a[i]<0.

cuando i=3

-> i==0 es falso, a[i]<0 es falso y a [i] < a [i – 1] es falso, por lo que la condición (1) es falsa. Ahora suma += a [i] = 3.

cuando i=4

-> i==0 es falso, a[i]<0 es falso y a [i] < a [i – 1] es falso, por lo que la condición (1) es falsa. Ahora suma += a [i] = 7.

cuando i=5

-> i==0 es falso, a[i]<0 es falso y a [i] maxsum es verdadero, ya que sum=7 y maxsum=2, entonces maxsum=7. Dado que sum =

(a [i] > 0) ? a [i] : 0, entonces suma=2 ya que a[5]>0.

Esta solución es aportada por nirmal Bharadwaj
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *