Algoritmo: Suma N numeros pares implementando ciclo while

Iniciado por LauraD, 11 Abril 2014, 22:37 PM

0 Miembros y 1 Visitante están viendo este tema.

LauraD

Buenas, tengo que realizar un algoritmo que me genere la suma de los primeros N numeros pares, donde N es ingresado por teclado mediante el uso de la estructura While.

No tengo mucha experiendia con esta estructura, así que se me dificulta..

Les agradeceria mucho si pueden ayudarme!

Intente hacerlo mediante el uso de este algoritmo, pero no obtengo el resultado adecuado..

#include<cstdlib>
#include<iostream>

using namespace std;

int main()
{
    int N;
    int Num;
    int Suma;
       
   
    N=0;
    Suma=0;
       

    cout<<"Ingrese un valor numerico"<<endl;
    cin>>Num;
   
    while (N<Num)
       {
          Suma=Suma+Num;
          N++-1; 
       }
       
       cout<<endl<<"La suma de los primeros "<<Num<<" numeros impares es igual a: "<<Suma<<endl;
       
   
   
    system ("PAUSE");
    return EXIT_SUCCESS;
}

ivancea96

Cita de: LauraD en 11 Abril 2014, 22:37 PM
    while (N<Num)
       {
          Suma=Suma+Num;
          N++-1; 
       }

Lo primero, pones "Suma = Suma+Num". Debería ser "Suma=Suma+N".

En segundo lugar, haces "N++" (incrementas N en 1), y luego el restas 1. Quizás prefieras hacer "N=N+2" (si buscas sumar los pares)

Replantéate el algoritmo: Tal como lo estás haciendo, estás sumando los pares MENORES a Num, no los primeros N números pares.

leosansan

#2
* El inicializar las variables es el primer paso:

Código (cpp) [Seleccionar]
int i=0,N=2,Num,Suma=0;

* N=2 que incrementando de dos en dos irán dando los pares a sumar a suma.

* una variable i para ir contando los términos que se toman hasta Num.

Con ello el while te quedaría:


Código (cpp) [Seleccionar]
while (i<Num) {
     cout<<N<<endl;//esto obra, es para ver los pares que salen
     Suma+=N;
     N+=2;
     i++;
}


El resto O.K.

Como cosa curiosa la suma es el número de pares pedido por el mismo más uno, te podrías ahorrar el while:


Código (cpp) [Seleccionar]
int main()
{
  int i=0,N=2,Num,Suma=0;
  cout<<"Ingrese un valor numerico: ";
  cin>>Num;
  cout<<endl<<"La suma de los primeros "<<Num<<" numeros impares es igual a: "      <<Num*(Num+1)<<endl;
  system ("PAUSE");
  return EXIT_SUCCESS;
}


¡¡¡¡ Saluditos! ..... !!!!



dRak0

{0,2,4,6,8,...,n}

f(n)=2n-2

n=1 -> 2*1-2=0
n=2 -> 2*2-2=2
n=3 -> 2*3-2=4
n=4 -> 2*4-2=6

int par(int n)
{
if(n==0)
   return 0;
return 2n-2+par(n-1);
}

Prueba

par(5)

2*5-2+2*4-2+2*3-2+2*2-2+2*1-2+0=
8+6+4+2+0+0=20

Analisis matematico 1. Series, suceciones , funciones.

Deberia funcar , no lo testee ,no tengo ganas de correr gcc. :P   

leosansan

#4
Teniendo en cuenta que la suma de los pares es la suma de los términos de una progresión aritmética: 2, 4,6, 8, 10, 12.......donde el término general es:

an=a1+(n-1)*d, donde d=2

se puede aplicar:

Sn=(a1+an)*n/2=(2+2+(n-1)*2)*n/2=

=(4+2*n-2)*n/2=)(2+2*n)*n/2=(n+1)*n ==> Sn=n*(n+1)

De donde sale la curiosa propiedad que mencioné en mi mensaje anterior. Por ejemplo, empezando desde 2, la suma de los cinco primeros pares es 5*6=30.

Claro que si empezamos contando, y sumando, los pares desde 0,es decir 0,2,4,6,8,... entonces queda la fórmula anterior queda como:

Sn=n*(n-1)

Y la suma de los cinco primeros pares es 5*4=20.

¡¡¡¡ Saluditos! ..... !!!!




ivancea96

Cita de: LauraD en 11 Abril 2014, 22:37 PM
Buenas, tengo que realizar un algoritmo que me genere la suma de los primeros N numeros pares, donde N es ingresado por teclado mediante el uso de la estructura While.

Pero él pidió el uso de while.

leosansan

Cita de: ivancea96 en 12 Abril 2014, 15:27 PM
Pero él pidió el uso de while.

Si y en mi primer mensaje se lo di con un while. Lo otro ha sido una curiosidad matemática. ;)

¡¡¡¡ Saluditos! ..... !!!!