• Inicio
  • Buscar
  • Ingresar
  • Registrarse

    Evil Dead: The Game el juego multijugador basado en la trilogía Evil DeaD y Ash vs Evil DeaD

    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • C / C++ »
    • [Ayuda] Calcular el valor de "E" (Euler) en C.
    • Imprimir
    Páginas: [1]   Ir Abajo

    Autor Tema: [Ayuda] Calcular el valor de "E" (Euler) en C.  (Leído 16081 veces)

    Desconectado r1ghtz0

    • { L4 } Geek
    • ****
    • Mensajes: 303
    • Estudiando
      • Ver Perfil
    [Ayuda] Calcular el valor de "E" (Euler) en C.
    « en: Junio 03, 2013, 01:00:45 am »
    Buenas,  ahora estoy haciendo este ejercicio en C para calcular el valor de E= 2,71828 18284... tomando en cuenta que para sacarlo debemos sumar 1/0 +1/1 + 1/2 + 1/3 + 1/4 + 1/5.... En el primer if lo que hago es calcular el valor de la primera suma de fracciones, es decir que estoy calculando el resultado de 1/0 + 1/1 que es igual a 1. Entonces e=k es decir que "e" vale 1.

    En el segundo if la "e" se va a sumar con 1/d sabiendo que "d" vale lo mismo que "J" pero aquí en el segundo if se le suma 1 así que valdría d= 2, por lo tanto lo que estoy haciendo aquí es sumar el resultado que me dio de 1/0 + 1/1 á 1/2 y de este modo ya e sumado las primeras tres fracciones.

    Ahora en la primera repetición del bucle el primer if no se va a cumplir, esto es para que el valor que saque al principio de "E" no se altere, la variable "d" valdría 2 que es lo mismo que "j" en esta repetición y lo mismo pasa con n que será igual a "J" para que se cumpla el segundo if. En esta primera repetición del bucle el primer if no se cumplirá pero el segundo si, la variable "d" se le suma 1 por lo cual valdría 3, por ultimo se suma e+1/d que ya sabemos que d= 3 en esta repetición, y bueno... así se seguiría repitiendo hasta que la J= 10.

    El código me quedó de esta manera y no me arroja el resultado de 2,71828 18284... si no que me da 2.000000... No sé que está mal en el código y quisiera que me dijeran qué está mal o por qué no me arroja el resultado correcto.

    Código: [Seleccionar]
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>

    int main(int argc, char **argv)
    {
    int n, i, j, d;
    float e, k;
    n= 1;

    for(j= 1 ; j<= 10 ; j++){
    d= j;
    n++; <---- la "n" también va a tener el mismo valor que la variable "J".

    if(j==1){
    i= n-1;
    k= 1/i + 1/d;  <---- aquí la primera suma de 1/0 + 1/1
            e= k;
        }

    if(n==j){
    d= d+1;  <---- d= j osea le sumamos 1
    e= e+1/d; <---- 1/d es lo mismo que 1/2
    }
    }
    printf("\nEl valor de e: %f", e);

    return 0;
    }

    Saludos...
    En línea

    Desconectado ravenheart

    • { L7 } Juanker
    • *******
    • Mensajes: 1359
    • Todos mis mensajes están bajo la licencia WTFPL v2
      • Ver Perfil
    Re:[Ayuda] Calcular el valor de "E" (Euler) en C.
    « Respuesta #1 en: Junio 03, 2013, 09:03:30 am »
    Cita de: r1ghtz0 en Junio 03, 2013, 01:00:45 am
    Código: [Seleccionar]
    k= 1/i + 1/d;  <---- aquí la primera suma de 1/0 + 1/1

    Estás haciendo divisiones enteras.
    En línea
    You do not need hope if you have drama to back you up.

    Desconectado r1ghtz0

    • { L4 } Geek
    • ****
    • Mensajes: 303
    • Estudiando
      • Ver Perfil
    Re:[Ayuda] Calcular el valor de "E" (Euler) en C.
    « Respuesta #2 en: Junio 03, 2013, 07:55:53 pm »
    Cita de: ravenheart en Junio 03, 2013, 09:03:30 am
    Cita de: r1ghtz0 en Junio 03, 2013, 01:00:45 am
    Código: [Seleccionar]
    k= 1/i + 1/d;  <---- aquí la primera suma de 1/0 + 1/1

    Estás haciendo divisiones enteras.

    Ya cambié el formato de las variables a float pero me da un resultado de 1.00000...
    Código: [Seleccionar]
    int main(int argc, char **argv)
    {
    float e, k, n, i, j, d;
    n= 2.0;

    for(j= 2.0 ; j<= 10.0 ; j++){
    d= j;
    n++;

    if(j==2.0){
    i= n-1.0;
    k= 1.0/i + 1.0/d;
        e= k;
        }

    if(n==j){
    d= d+1.0;
    e= e+1.0/d;
    }
    }
    printf("\nEl valor de e: %f", e);

    return 0;
    }

    En línea

    Desconectado ravenheart

    • { L7 } Juanker
    • *******
    • Mensajes: 1359
    • Todos mis mensajes están bajo la licencia WTFPL v2
      • Ver Perfil
    Re:[Ayuda] Calcular el valor de "E" (Euler) en C.
    « Respuesta #3 en: Junio 04, 2013, 07:38:09 am »
    La verdad es que tu código es absurdamente complicado. Tienes varios errores:
    Siempre incrementas j y n, d vale lo mismo que j y n uno más. i se hace siempre igual a n-1, que es lo mismo que j
    Luego haces: k = 1/i + 1/d, que da 1.0, porque sólo lo haces la primera vez (con j = 2).

    Luego comparas j con n, pero nunca son iguales, así que el resto no se ejecuta nunca.
    Con lo fácil que hubiera sido...
    Código: [Seleccionar]
    int main(...)
    {
        const float ITERACIONES = 10.0;
        float e = 0;
        for (float i = 1; i <= ITERACIONES; i++)
        {
            e += 1.0 / i;
        }
    }

    De todas maneras, esa serie no converge a e, para eso tendrías que dividir entre el factorial del denominador.
    En línea
    You do not need hope if you have drama to back you up.

    Desconectado r1ghtz0

    • { L4 } Geek
    • ****
    • Mensajes: 303
    • Estudiando
      • Ver Perfil
    Re:[Ayuda] Calcular el valor de "E" (Euler) en C.
    « Respuesta #4 en: Junio 06, 2013, 12:41:26 am »
    mmm... a pesar de todo tu versión también da un número muy elevado poniendo un rango de 10. El resultado que da es 2.928968, a mi me pasa igual, lo que hay que hacer es ponerle un rango de 8 a tu versión y un rango de 7 a la mía:

    Tu version:
    Código: [Seleccionar]
    #include <stdio.h>

    int main(int argc, char **argv)
    {
    float e= 0, i;

    for(i= 1 ; i<= 8 ; i++){
    e= e+1/i;
    }
                    printf("\nEl valor de >e< es: %f", e);

    return 0;
    }

    Mi version:
    Código: [Seleccionar]
    #include <stdio.h>
    #include <math.h>
    #include <stdlib.h>

    int main(int argc, char **argv)
    {
    float e, j, d;

    for(j= 1 ; j<= 7 ; j++){
    d= j;
    if(j==1){
    e= e + 1/j;
        }
       
    if(d==j){
    d= d+1;
    e= e+1/d;
    }

    }
    printf("\nEl valor de e: %f", e);

    return 0;
    }

    En estos casos da un resultado más aproximado de 2.717857...
    En línea

    Desconectado ravenheart

    • { L7 } Juanker
    • *******
    • Mensajes: 1359
    • Todos mis mensajes están bajo la licencia WTFPL v2
      • Ver Perfil
    Re:[Ayuda] Calcular el valor de "E" (Euler) en C.
    « Respuesta #5 en: Junio 06, 2013, 08:50:45 am »
    Cita de: ravenheart en Junio 04, 2013, 07:38:09 am
    De todas maneras, esa serie no converge a e, para eso tendrías que dividir entre el factorial del denominador.
    En línea
    You do not need hope if you have drama to back you up.

    Desconectado JeissonV13

    • { L0 } Ñuub
    • Mensajes: 10
    • Tan fácil destruir, pero tan difícil crear.
      • Ver Perfil
    Re:[Ayuda] Calcular el valor de "E" (Euler) en C.
    « Respuesta #6 en: Noviembre 15, 2013, 09:06:49 am »
    Amigo, pues la verdad viendo tu código es muy enredado e ineficiente, te recomiendo,siempre que codifiques, dividir el programa en subprogramas, o funciones y a su ves divides el problema.
    Yo anteriormente ya realice este ejercicio y el numero natural e no se calcula como lo planteaste si no que se calcula 1/0! + 1/1! + 1/2! + . . .         teniendo en cuenta de que "!" quiere decir factorial.
    Aquí dejo al que le interese el código fuente de este programa.

    Código: [Seleccionar]
    #include <iostream>
    #include <stdlib.h>
    #include <stdio.h>
    using namespace std;

    double factorial(int n){
    double aux=1;
    for(int i = 2; i<=n ; i++){
    aux *= i;
    }
    return aux;
    }
    double e(int n){
    double sum = 0;
    for(int i = 0; i < n; i++){
    sum += 1/factorial(i);
    }
    return sum;
    }



    int main (){
    int n;
    cout <<"Cuantos terminos de precision desea: ";
    cin  >> n;
    printf("e = %f",e(n));

    }

    Saludos  8).
    « Última modificación: Noviembre 15, 2013, 09:10:13 am por JeissonV13 »
    En línea

    • Imprimir
    Páginas: [1]   Ir Arriba
    • Hack x Crack - Comunidad de Seguridad informática »
    • Programación »
    • C / C++ »
    • [Ayuda] Calcular el valor de "E" (Euler) en C.
     

    • SMF | SMF © 2013, Simple Machines
    • XHTML
    • RSS
    • WAP2
    Va un mudo y le dice a un sordo: Hack x Crack usa cookies. Pues eso... Learn more