2016-02-28 14 views
0

我不確定我是否正確回答了我的問題,但這裏是我基本上在尋找的東西。我目前正在爲在我的代碼中使用函數的學校練習作業。通過改變函數中的操作,我無法重用某個函數。我如何創建一個公式只使用C中的聲明int?

int ArithmeticOptionGame(int Operation) 
{ 
int MaxNumber, AmtOfProblems, i, Answer = 0, Choice; 
printf("What is the maximum number you would like?\n"); 
scanf("%d", &MaxNumber); 
printf("How many problems would you like?\n"); 
scanf("%d", &AmtOfProblems); 

int start = time(0); 

for(i = 0; i < AmtOfProblems; i++) 
{ 
int j = (rand() % MaxNumber) + 1; 
int k = (rand() % MaxNumber) + 1; 
printf("What is %d %d %d:\n", j, Operation, k); 

/* What goes here for the answer formula */ 

scanf("%d", &Choice); 
if(Choice == Answer) 
{ 
printf("Correct! Great Job!\n"); 
} 
else 
{ 
    printf("Sorry, that's incorrect. The answer is %d\n", Answer); 
    TotalScore -= 5; 
} 
} 
int end = time(0); 

TimeSpent = end - start; 
TimeConvertedToScorePoints(); 
TotalScore /= AmtOfProblems; 


return; 
} 

取決於我需要爲我的操作是否是+, - ,/,*,等我怎麼會下printf行代碼時。我已經嘗試過了:

Answer = j Operation k; 

我知道這是錯誤的,但我想我會嘗試。再次,不確定這是否甚至可能,或者我是否需要爲每個操作創建一個單獨的函數?

+0

函數指針可能很有用。 – MikeCAT

+2

我認爲顯示變量的聲明比簡短地提出問題更重要。 – MikeCAT

+0

如果需要,我可以發佈我的整個程序,而不是多行。不幸的是,我們還沒有學習函數指針,所以我不能使用我們還沒學過的任何東西。 – humbleCoder

回答

1

鑑於這是一個入門課程的作業,我認爲使用明確的switch聲明將是首選方法。

double 
compute(const double lhs, const double rhs, const char op) 
{ 
    switch (op) 
    { 
    case '+': 
     return lhs + rhs; 
    case '-': 
     return lhs - rhs; 
    case '*': 
     return lhs * rhs; 
    case '/': 
     return lhs/rhs; 
    default: 
     fprintf(stderr, "error: unknown operation: %c\n", op); 
     abort(); 
    } 
} 

我有意改變了這個設置,所以你必須將這個概念轉移回你的練習。

+0

我們還沒有學到switch語句,所以我不能使用它們。我瞭解他們如何工作的概念,並瞭解他們爲什麼會在這裏完美工作。我會盡力實施自己,看看它是如何發展的。非常感謝您的幫助! – humbleCoder

+1

如果你不能使用'switch',你可以很容易地使用一堆'if's /'else'來完成和'switch'相同的功能。 – RastaJedi

+0

@RastaJedi哦哇......當然!我不敢相信我沒有想到......尷尬。謝謝! – humbleCoder

相關問題