2012-07-18 63 views
0

該程序是否正常,或者可以改進(但簡單)?我如何確保不輸入重複號碼?確保輸入唯一的輸入並將其存儲在數組中

int n; 
int array[9]; 

cout<<"Enter Number Between 9-0 Only"<<endl; 
for(int i = 0; i<=10; i++){ 
    cout<<"Enter Number" <<(i+1)<<endl; 
    cin >> n; 
    if((n >= 0) && (n <=9)){ 
     array[i]=n; 
    } 
     else{ 
     cout<<"Numbers from 0-9 only\n"<<endl; 

     break; 
    } 

} 
+0

該程序甚至不會嘗試檢查重複的數字。提示:你需要一個嵌套循環。 – dasblinkenlight 2012-07-18 20:07:27

+0

這是功課嗎?如果是這樣,請添加作業標籤。儘管如此,你仍然會得到幫助。 :) – Almo 2012-07-18 20:07:37

+0

它不作業即時做這部分...即時通訊工作的重複部分..但需要知道這是否可以改善或有什麼辦法,我可以將所有在一步之內等 – user1535963 2012-07-18 20:11:23

回答

1

(編輯)完成,編譯代碼

要檢查數量與更高的性能使用,嘗試這樣的事情(使用工作代碼傑克拉德克利夫):

#include <iostream> 
using namespace std; 

int main() 
{ 
    int n = 0; 
    int array[9] = {0}; 

    bool isUsed[10] = {0}; 

    for(int i = 0; i < 9; i++) 
    { 
    cout << "Enter Number " << (i + 1) << endl; 
    cin >> n; 

    if((n >= 0) && (n <= 9)) 
    { 
     if (isUsed[n] == false) 
     { 
     array[i] = n; 
     isUsed[n] = true; 
     } 

     else 
     { 
     cout << "Number has already been used." << endl; 
     i--; 
     } 
    } 

    else 
    { 
     cout << "Numbers from 0-9 only." << endl; 
     i--; 
    } 
    } 

    return 0; 
} 

優化是不是這個簡單的代碼完全必要的,但它這似乎是實踐的鍛鍊,那麼爲什麼不練優化鱈魚呃?

+0

謝謝生病嘗試實施它 – user1535963 2012-07-18 20:50:51

0

大部分情況都很好,但有兩個問題突出。

首先,你有大小9的數組,但你正在服用的11個數字,因爲你開始for循環在0和經歷,以10

其次,因爲你擁有了它,所以如果在輸入的數字不在0和9之間,包括for循環中斷。這就意味着如果輸入了一個無效的數字,那麼只有不到9個數字會被放入數組中。改變整個循環讀這一點,你應該是不錯的:

for(int i = 0; i < 9; i++) { 
    cout << "Enter Number " << (i + 1) << endl; 
    cin >> n; 
    if((n >= 0) && (n <= 9)) 
     array[i] = n; 
    else { 
     cout << "Numbers from 0-9 only\n" << endl; 
     i--; 
    } 
} 

整個火災部分是正確的,但是我在別的語句刪除的休息,在我 - 添加。我補充說,當提示用戶重新輸入號碼時,輸入號碼將位於正確的索引處。

我希望這是有幫助的。

1

拿不到重複輸入:

int n; 
    int array[9]; 

    cout<<"Enter Number Between 9-0 Only"<<endl; 
    for(int i = 0; i<=10; i++){ 
    cout<<"Enter Number" <<(i+1)<<endl; 
    cin >> n; 
    if((n >= 0) && (n <=9)){ 
      bool bEntered = false; 
      for(int j=0; j<10;j++) 
      { 
       if(n == array[j]) 
       { 
        cout << "number already has been input" << endl; 
        bEntered = true; 
        } 
       } 
      if(!bEntered) 
     array[i]=n; 

    } 
     else{ 
     cout<<"Numbers from 0-9 only\n"<<endl; 

     break; 
    } 

} 
+0

抱歉,但編譯無法正常或運行正常 – user1535963 2012-07-18 20:29:15

+0

它未能編譯好,或運行正常?如果編譯不正確,它怎麼能不能正常運行? – 2012-07-18 20:30:39

+0

使用全編碼,如果你不能編譯它http://pastebin.com/W7PZNmjX(抱歉的包括,正在搞點東西) – 2012-07-18 20:31:27

相關問題