2012-02-23 120 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