2016-11-10 10 views
0
#include<stdio.h> 
#include<stdlib.h> 
#include<conio.h> 
#include<time.h> 

double gen(double dS) //Function for a random double variable 
{ 
    double dx=0; 
    dx=rand()%200+1; 
    dS=dx/100; 
    return(dS); 
} 

int main() 
{ 
    double dZahl=0; 
    double dTokens=1; 
    srand((unsigned)time(NULL)); 
    double dSummand=0; 
    int iGame=0; 
    for(;;) 
    { 
     printf("Deine Tokens:%.2lf\n", dTokens); //This doesn't really matter 
     printf("Was m%cchtest du tun?\n[1]:Generiere Tokens\n[2]:Spiele ein Minigame\n", 148); 
     fflush(stdout); 
     scanf("%d", &iGame); 
     fflush(stdin); 
     switch (iGame) 
     { 
      case 1: 
      { 
       gen(dSummand); //function in use 
       dTokens=dTokens+dSummand; 
       printf("\nDu hast %.2lf Tokens generiert!\n", dSummand); //the output of the value 
       fflush(stdout); 
      } 
      break; 
     } 
    } 

    getch(); 
} 

dSummandはdSから値を取得しないという問題があります。私はそれを修正しようとしていたので誰も問題が何であるか知っていますが、私はそれを理解できませんでした。関数の呼び出し後にCの関数パラメータが変更されない

私のプログラムの関数でランダムなdouble値を取得しようとしています。私はそれがこのように動作すると思ったが、残念ながらそれはしませんでした。

+1

、それは問題の対象ではなく、助けを求める嘆願を反映しているように、あなたの質問に改称してください。また、私は[tag:eclipse]が正しいタグであるとは思わない。 http://stackoverflow.com/help/how-to-ask –

答えて

0

dSの値を変更した関数から出力したい場合は、ポインタを渡す必要があります。

double gen(double *dS) { 

*dS=dx/100; 

、その後

gen(&dSummand); 
+0

ありがとうございました。決してポインタを使うことは考えられませんでした。 –

+0

また、関数インタフェースとして 'double gen(void)'を使い、 'dS = gen();'を呼び出すと、うまく動作します。 –

+0

これはコピーによる価値の問題ですか? –

関連する問題