2016-07-06 176 views
-2

我今天有這項任務,但我不太明白這個問題。 編寫一個輸出斐波納契數字的程序。這部分我明白我有這個它可以讓你輸入一個數字,它會創建一個長度爲fubonacci的序列。用getchar輸出斐波那契數?

typedef unsigned long long ull; 
int main() { 
int N; 
cout << "Enter the N : "; 
cin >> N; 
ull f0 = 0, f1 = 1; 
ull f = f1; 
cout << "The Sequence of Fibonacci Numbers : " << endl; 
cout << f0 << " "; 
cout << f1 << " "; 

for (int i = 1; i < N; i++) { 
cout << f << " "; 
f0 = f1; 
f1 = f; 
f = f0 + f1; 
} 
cout << endl; 
return 0; 
} 

我不明白的是這部分任務..你們中的任何一個人能夠理解這一點嗎?

「使用while循環和兩個或三個整數變量,讓你的程序輸出新Fibonacci數到屏幕上每個用戶輸入一個密鑰(使用getchar()!)時間。」

+0

毫不奇怪你很困惑。廢話,抱歉*代碼*,不寫入被讀取。 – user4581301

+3

聽起來就像你需要在'for'循環內放置'cin.get()'。你可以問你的經理爲什麼在世界上你想用'getchar()'代替。 – WhozCraig

+0

您正在打印'0 1 1 ...'嗎?它不應該是'1 1 2 ...'嗎? –

回答

-2

無論誰給你這個任務,或者不知道C++是如何工作的或者英語是如何工作的。

如果他們的意思,從字面上的那一刻,你按一個鍵(你不能進入的方式的關鍵),斐波那契數應該出現那麼this question是給你的。

如果他們意味着,按Enter鍵(也就是當輸入被刷新過),因爲有個字符(包括空格)的數字應該出現多次,再經過:

while(getchar() != EOF) //print next fibonacci number 

==修正= =

實際上,如果程序讀取文件而不是標準輸入,則只需要輸入一段代碼。所以,這個任務現在聽起來更令人困惑。

0

一個斐波那契數將是它之前的兩個元素的總和。

這樣:

int main(){ 
     char c = 'a'; 
     int curr=0, next=1; 
     while (c != 'q'){ 
      c = getchar(); //This just pauses and waits for user input. Exits if user hits q. 
      cout << curr << endl; 
      next = curr + next; 
      curr = next - curr; 
     } 
} 

你應該想的是在這樣的你如何能避免使用臨時變量的情況下(這就是爲什麼他說,2個或3個變量)。請注意,我在curr +旁邊設置。然後我需要將curr設置爲等於next的舊值,這已經消失 - 但它並沒有真正消失,只是curr添加到它。

+0

回答一個問題,但不是OP問的問題。那麼'getchar'和OP爲什麼需要一個while循環和一個整數? – user4581301

+0

對不起,我不明白你的意思。他的問題是「你們中的任何一個人能夠理解這一點?「related」使用while循環和兩個或三個整型變量,每當用戶輸入一個鍵(使用getchar()!)時,程序都會在屏幕上輸出一個新的斐波那契數字。「。您認爲他意味着什麼? ?編輯:爲什麼他需要使用getchar()只是因爲這就是教授已經決定他想用來通過循環的權利? –

+1

問題:OP應該如何編寫這個程序?程序,這是一個很好的程序,很好,清晰,不需要太多的解釋,我沒有任何問題,除了OP現在可以複製和粘貼它並且什麼都不學習的事實 – user4581301

-1

嘗試在while循環,這將做斐波那契數計算開始使用

c=getchar(); 
if(c!='/n') 
    getchar(); 

。第二個getchar()是照顧換行符,否則會導致兩個字符輸入,因此即使用戶只輸入一個鍵/字符時也會打印兩個斐波納契數字。