Hirdetés

Új hozzászólás Aktív témák

  • Jester01
    veterán

    Üdv ismét!
    Nagyjából sikerült megérteni a feladatot, a következőképpen hangzana:

    Ez a feladat szövege: Az e kiszámolása (ex=1+x+x2/2!+x3/3!+...) adott pontossággal (input). Az exp() nem használható .
    Input: pontosság (>10E-15)
    Output: Az e a kért pontossággal.

    Ha jól értelmezem, akkor
    ha input=7, akkor ezt a műveletsort hajtaná végre:
    e=2+(1/2!)+(1/3!)+(1/4!)+(1/5!)+(1/6!)+(1/7!), és kiírná e-t.
    Ha input=3, akkor ezt:
    e=2+(1/2!)+(1/3!), és kiírná e-t.

    #include <stdio.h>
    #include <math.h>

    int faktorialis(int n){
    if(n==1) return 1;
    return (n * faktorialis(n-1));
    }


    int eszam(){
    int h, p=0, i=0;
    double e=2.0;

    printf("Adja a meg a kivant pontossagot!\n");
    scanf("%d", &p);
    if (p<0)
    printf("Csak pozitiv egesz szam fogadhato el!");
    else
    for (i=2; i<p; i++) {
    e+=1/faktorialis(p);

    }
    return e;
    }

    int main(){
    printf("\nVegeredmeny:%e",eszam());
    return 0;
    }

    Idáig jutottam, már abszolút nincs ötletem hogyan tovább. Így a program nem működik, 1.6-ot ad eredményül, többek között ezt sem tudom miért. Estére viszont be kellene adnom, különben csúszok egy évet.
    Valaki tud, segítsen. Előre is köszönöm!

    --- t.c.orig 2007-12-14 18:46:12.000000000 +0100
    +++ t.c 2007-12-14 18:49:52.000000000 +0100
    @@ -7,7 +7,7 @@
    }


    -int eszam(){
    +double eszam(){
    int h, p=0, i=0;
    double e=2.0;

    @@ -17,13 +17,13 @@
    printf("Csak pozitiv egesz szam fogadhato el!");
    else
    for (i=2; i<p; i++) {
    - e+=1/faktorialis(p);
    + e+=1./faktorialis(i);

    }
    return e;
    }

    int main(){
    - printf("\nVegeredmeny:%e",eszam());
    + printf("Vegeredmeny:%g\n",eszam());
    return 0;
    }

    Fő probléma 2 volt: az egész és a lebegőpontos számítások helytelen használata, illetve a faktoriális hívásban nem a ciklusváltozót adtad át.

Új hozzászólás Aktív témák