es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Una salida inesperada con una condición “if”.

Quiero escribir un programa para calcular la suma de los primeros n números naturales.

El código que he intentado:

#include<stdio.h>
void main()
{
    int sum=0,i=1,n;
    printf("Ingrese el número hasta donde desea imprimir la suma : ");
    scanf("%d",&n);
    printf("\nSUMA = ");
    while(i<=n)
    {
      if(i<n)
      {
          printf("%d+",i);
      }
      if(i=n)
      {
          printf("%d",i);
      }
      sum=sum+i;
      i++;
    }
    printf("\nla suma de los primeros %d números es: %d",n,sum);
    return 0;
}

y el resultado esperado si n=5 es:

ingrese el número hasta donde desea imprimir la suma:

sum = 1+2+3+4+5

la suma de los primeros %d números es: 5

pero lo que obtengo es:

sum = 1+5

y el valor es 5

pero cuando uso un if else en lugar de dos if, funciona correctamente. {=”” printf(“%d+”,i);=”” }=”” if(i=”n)” {=”” printf(“%d”,i);=”” }=”” sum=”sum+i;” i++;=”” }=”” printf(“\nla=”” suma=”” de=”” los=”” primeros=”” %d=”” números=”” es:=”” %d”,n,sum);=”” return=”” 0;=”” }=”” ="" y="" el="" resultado="" esperado="" si="" n="5" es:=""=”” ingrese=”” el=”” número=”” hasta=”” donde=”” desea=”” imprimir=”” la=”” suma:=”” sum=”1+2+3+4+5″ la=”” suma=”” de=”” los=”” primeros=”” %d=”” números=”” es:=”” 5=”” ="" pero="" lo="" que="" obtengo="" es:=""=”” sum=”1+5″ y=”” el=”” valor=”” es=”” 5=”” “`=”” pero=”” cuando=”” uso=”” un=”” if="" else=”” en=”” lugar=”” de=”” dos=”” if,=”” funciona=””></n)
{
printf(“%d+”,i);
}
if(i=n)
{
printf(“%d”,i);
}
sum=sum+i;
i++;
}
printf(“\nla suma de los primeros %d números es: %d”,n,sum);
return 0;
}


y el resultado esperado si n=5 es:

ingrese el número hasta donde desea imprimir la suma:

sum = 1+2+3+4+5

la suma de los primeros %d números es: 5


pero lo que obtengo es:

sum = 1+5

y el valor es 5
“`

pero cuando uso un if else en lugar de dos if, funciona correctamente.></stdio.h>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Hay un error en el código. La segunda instrucción “if” debería usar el operador de comparación == en lugar del operador de asignación =, ya que está intentando verificar si i es igual a n. El código corregido se muestra a continuación:

    #include<stdio.h>
    void main()
    {
        int sum=0,i=1,n;
        printf("Ingresa el número hasta donde quieres imprimir la suma : ");
        scanf("%d",&n);
        printf("\nSUMA = ");
        while(i<=n)
        {
            if(i<n)
            {
                printf("%d+",i);
            }
            if(i==n)
            {
                printf("%d",i);
            }
            sum=sum+i;
            i++;
        }
        printf("\nla suma de los primeros %d números es : %d",n,sum);
    }
    

    la salida será como se espera:

    ingresa el número hasta donde quieres imprimir la suma:
    5
    
    suma = 1+2+3+4+5
    la suma de los primeros 5 números es : 15
    ``` {="" printf("%d+",i);="" }="" if(i="=n)" {="" printf("%d",i);="" }="" sum="sum+i;" i++;="" }="" printf("\nla="" suma="" de="" los="" primeros="" %d="" números="" es="" :="" %d",n,sum);="" }="" ```="" la="" salida="" será="" como="" se="" espera:="" ```="" ingresa="" el="" número="" hasta="" donde="" quieres="" imprimir="" la="" suma:="" 5="" suma="1+2+3+4+5" la="" suma="" de="" los="" primeros="" 5="" números="" es="" :="" 15=""></n)
            {
                printf("%d+",i);
            }
            if(i==n)
            {
                printf("%d",i);
            }
            sum=sum+i;
            i++;
        }
        printf("\nla suma de los primeros %d números es : %d",n,sum);
    }
    

    la salida será como se espera:

    “`
    ingresa el número hasta donde quieres imprimir la suma:
    5

    suma = 1+2+3+4+5
    la suma de los primeros 5 números es : 15
    “`></stdio.h>

Comments are closed.