problem mit input von Double mit scanf()

v0rTex

Grünschnabel
hallo :)
bin neu in C

und zwar habe ich einen algorithmus zum ziehen der k-ten wurzel geschrieben
(spezielles newton-verfahren). Nun möchte ich zahlen via input an
die funktion ktrt(double num, int exp) übergeben.
Genau das funktioniert offenbar nicht richtig.
Testen tue ich das ganze an der 3. wurzel aus 125 --> 5
Der übergebene [int e] exponent (3) funktioniert.
Die eingegebene [double d] diskriminate (125.0)
wird schon mit %f nicht richtig angezeigt (mit %d aber schon)
und liefert ein fehlerhaftes ergebnis des algorithmus'.
Übergibt man die parameter des algorithmus' per hand
und nicht per variable ( ktrt( 125,3 ) oder ktrt( 125,e ) ) funktioniert
alles und 5.000000 wird ausgegeben....:-(

Nun würde ich gerne wissen was falsch ist bzw. warum
der Double anscheinend nicht richtig eingelesen wird. :confused:
Der algorithmus funktioniert ^^ den hab ich ausgiebig getestet :) .

Code:
#include <stdio.h>

double ktrt(double num, int exp);

int main(void) {

    printf("Please insert root exponent : ");
    int e;
    scanf("%d",&e);
    fflush(stdin);
    printf("Please insert discriminant : ");
    double d;
    scanf("%f",&d);
    fflush(stdin);
    printf("The %d. root of %f equals ",e,d);
    printf("%f",ktrt(d,e)); //statt 5.000000 kommt 0.000301
    
    printf("\n\n\n");
    system("Pause");
    return 0;
}

double ktrt(double num, int exp) {
    double k = 1;
    int i;
    for(i=0; i<20; i++) {
        k = ((exp-1)*k + num/pow(k,(exp-1)))/exp;
    }
    return k;
}

schonmal danke :)
 

v0rTex

Grünschnabel
ahh danke sehr :)
sehr logisch.
in den ganzen tutorials etc. stand einfach immer nur "%f = gleitkomma" oder
"%d = dezimalzahlen"...
und in den formattabellen hab ich bisher kein %lf gesehen...