2014-10-05 42 views
0

程序的工作是在一行上輸出k小於n的所有非負倍數,並使用3個不同的循環執行三次(按此順序:while,for ,do-while)。每個樹時間,倍數(如果有多個)以逗號分隔,在第一個數字之前或最後一個數字之後沒有逗號。 你的程序的一個例子的運行還不如去:循環幫助正確輸出倍數

0,5,10,15,20,25,30,35

0,5,10,15,20, 25,30,35

0,5,10,15,20,25,30,35

我是第一次編程的學生,這是我上的Visual Studio 2012年的任務之一,我掙扎與所有循環,迄今已寫出2(while循環,for循環)。我的兩個循環都輸出了#,這些都沒有問題,我的輸出語句中的逗號的位置也沒有。我的程序的運行:

,0,1,6,31

0,10,60

我的代碼:

#include <iostream> 
#include <string> 
using namespace std; 

bool die (const string msg); 
void recover(); 

int main(){ 
unsigned k, n; 
cout <<"Input 2 #'s: " <<endl; 
cin >>k >>n || die("Input Failure"); 
if (k == 0 || n == 0) die("Number Can't Be 0"); 
unsigned i = 0; 
while(i < n){ // 
    cout <<" ," <<i; 
    i *= k; 
    i++; 
    } 
cout <<endl; 

for(i = 0; i < n; i++){ 
    recover; 
    i *= k; 
    cout <<i <<" ,"; 

} 
cout <<endl; 

} // main 

`

+0

提示:你可以將系列改寫爲0,0 + 5,5 + 5,10 + 5等等。 – molbdnilo 2014-10-05 22:19:15

+0

編程的第一條規則:*把問題分解成更簡單的問題。*起初不要擔心逗號,只需要正確地得到數字。你需要幫助的三個循環中的哪一個? – Beta 2014-10-05 22:24:01

+0

老實說,我需要所有人的幫助,但讓我們從while循環開始,也許我會從那裏學習。我也嘗試替換i * = k;與i + = k(如建議),但產出也是錯誤的。 – 2014-10-05 22:38:34

回答

0

你知道該系列應該是

0, 5, 10, 15, 20, 25, 30, 35 

我們會做while循環。在英語中,用「while」表示,程序將是「從0開始,然後只要低於40,就增加5」。

unsigned i = 0; // start with 0 
while(i < n){  // as long as it's below 40 
    cout <<" ," <<i; 
    i += k;   // increase by 5 
} 
cout <<endl; 

爲了得到正確的逗號,我們必須將第一個數字或最後一個作爲特殊情況。也就是說,我們必須在每個數字之前加上「,」,但在第一個數字之前,或者在每個數字之後,但在最後一個之後。首先是更容易一些:

unsigned i = 0; // start with 0 
while(i < n){  // as long as it's below 40 
    if(i > 0) 
    cout <<" ,"; 
    cout << i; 
    i += k;   // increase by 5 
} 
cout <<endl; 

這應該足以讓你開始。當您嘗試使用do-while時,如果開頭和結尾的數字不完全正確,請逐頁瀏覽紙上的循環 - 您必須按照正確的操作順序進行操作。對於for,你有三個不同的參數可供使用,初始值,結束條件和步​​長,所以只需要玩弄它們,直到你看到如何讓它給你你想要的序列。

+0

真的很感激!我不知道爲什麼我覺得有必要讓「i ++」搞砸了這一切。再次感謝,讓我們知道如果我遇到其他循環的麻煩。 – 2014-10-06 00:33:48

+0

如何爲do-while循環獲得適當的逗號分配?這是我迄今爲止的代碼: if(i> 0){ i = 0; do { cout <<「,」; cout << i; i + = k;} while(i 2014-10-06 17:24:04

+0

@BoyWonder:思考一下,不要只是把代碼放在一起。爲了在第一個數字前省略逗號,有條件的'if(i> 0)'應該控制部分代碼。 – Beta 2014-10-06 19:30:55