2012-02-23 121 views
0

你好我试图显示最高和最低的数字与输入-99打破循环,不显示-99作为最低的数字。任何帮助都会很棒。显示最高和最低的输入

int number; 
int largeNum = 0 ; 
int smallNum = 0; 

cout << "enter numbers" ; 

do 
{ 
cin >> number; 

if (number > largeNum) 
    largeNum = number; 

if (number < largeNum) 
    smallNum = number; 

if (number < smallNum) 
    smallNum = number; 

} while (number != -99); 



     cout << largeNum << endl; 
     cout << smallNum << endl; 
+1

我不会放弃的代码,因为这看起来像家庭作业。你可以看看C++的break语句来实现这一点。 – Asha 2012-02-23 05:31:00

回答

1

你可以这样做:

do { 
    cin >> number; 

    if (number == -99) { 
     break; 
    } 

    if (number > largeNum) 
     largeNum = number; 

    if (number < largeNum) 
     smallNum = number; 

    if (number < smallNum) 
     smallNum = number; 

} while (true); 
+1

请避免发布精确的家庭作业代码,如问题。 – Asha 2012-02-23 05:33:51

+1

你为什么认为这是作业?它的外表相当平凡,用户可能一直在尝试自己的东西。另外如果你看,我只改变了比较进行的地方。用户自己做了几乎所有的事情。 – vvnraman 2012-02-23 05:40:33

+0

如果它是家庭作业,我仍然会因为缺乏对输入操作的适当验证而失败...... – 2012-02-23 05:53:41

0

更好的解决问题的方法是通过使用排序:

void main() 
    { 
    int array[100],n; 

    //get number of elements 
    cout<<"Enter number of elements: "; 
    cin>>n; 

    //get elements 
    for(int i=0;i<n;i++) 
    { 
int temp; 
    cout<<"Enter element to position "<<i<<" :"; 
    cin>>temp; 
//to break at -99 
    if(temp==-99) 
    break; 
    else 
    array[i]=temp; 

    } 

    //sort the elements in ascending order 
    for(int i=0;i<n;i++) 
    { 
    if(array[i]>array[i+1]) 
    { 
    int temp = array[i]; 
    array[i] = array[i+1]; 
    array[i+1] = temp; 
    } 
    } 

    //display smallesst and largest 

    cout<<"Smallest: "<<array[0]; 
    cout<<"Largest: "<<array[n-1]; 
    } 
+0

这实际上是一个*更糟*的解决方案,因为它使用了不必要的存储空间,运行速度更慢,并且因为输入的数量是有限的它甚至没有解决所述的问题。 – molbdnilo 2012-02-23 16:11:53

+0

我同意它不是一个优化的代码。这是为了更好的理解。一旦你理解了你可以随时优化的原则。] – 2012-02-24 04:25:57

+0

你总是可以组合2个for循环等进行优化。但是,我宁愿离开实施者 – 2012-02-24 04:30:46