2012-07-18 61 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

相关问题