2015-07-12 77 views
-1

我正在編寫的程序可讓用戶根據需要輸入儘可能多的正整數。但是,當有人輸入負數時應該退出。打印輸入的最小數字(不包括任何底片)

到目前爲止,我對這一切都很好。我的下一個問題是打印最小的正數。

這是我的代碼:

#include <iostream> 
#include <iomanip> 

using namespace std; 

int main() 
{ 
    int input; 
    int count; 
    int min; 

    count = 0; 

    cout << "Input a positive integer to begin: "; 
    cin >> input; 
    count++; 

    while(input > 0) 
    { 
     cout << "Continue to input positive integers. Enter negative number to exit: "; 
     cin >> input; 
     count++; 
     min = input; 

     if (input < min); 
     min = input; 

     if (input < 0) 
     { 
      cout << "\nLowest number: " << min << endl; 
      cout << "Total numbers inputed: " << --count << endl; 
      break; 
     } 
    } 
} 

到目前爲止的代碼是給我這個當我運行它:

輸入一個正整數開始:45

繼續輸入正整數。輸入負號退出:48

繼續輸入正整數。輸入負號退出:74

繼續輸入正整數。輸入負號以退出:1

繼續輸入正整數。輸入負數退出:-1

最低數量:-1

總數inputed:4

但是我希望它打印出的最低數量爲1個或任何小的正整數,用戶輸入。

任何幫助,將不勝感激!謝謝!

回答

1

你有2個問題是導致此:

1:

if (input < min); 

你不應該把分號if後,無論是真的還是假的我們能夠立刻if後面的代碼執行

2:

if (input < min) 
     min = input; 
:固定第一個問題後

將分配任何inputmin該具備的條件,甚至是負數 所以你必須添加另一個條件是確保input是積極的,然後分配給它

if ((input < min) && (input > 0)) 
      min = input; 

編輯:您需要刪除min = input;這正好放在前if

的完整代碼:

#include <iostream.h> 
#include <iomanip.h> 



int main() 
{ 
    int input; 
    int count; 
    int min; 

    count = 0; 

    cout << "Input a positive integer to begin: "; 
    cin >> input; 
    count++; 

    while(input > 0) 
    { 
      cout << "Continue to input positive integers. Enter negative number to exit: "; 
      cin >> input; 
      count++; 


      if ((input < min) && (input > 0)) 
      min = input; 

      if (input < 0) 
      { 
       cout << "\nLowest number: " << min << endl; 
       cout << "Total numbers inputed: " << --count << endl; 
       break; 
      } 
    } 
} 
+0

我試過這個,但它仍然說我的最低數字是否定的:/ – Jane

+0

@Jane:哦,是的,對不起,我忘了刪除東西,我會編輯 –

+0

你好。我也嘗試過,但仍然沒有成功。我需要有min =輸入;在if語句之前的某處,否則它將不知道將什麼變量與輸入進行比較 – Jane

0

您更新了數最少你檢查之前,如果爲負:

if (input < min) 
    ... 
if (input < 0) 
    ... 

所有你需要做的是換兩個,如果塊,這樣在遇到負數時,程序檢查了它的負面性第一,並且在第二個if塊之前執行了break

此外,你的代碼中似乎還有一個額外的分號(和一個額外的任務?)

+0

我試過,但因爲程序現在打破一旦輸入負數它永遠不會分配最低的變量,所以現在它說「最低數字= 0」 – Jane

+0

@Jane你永遠不會初始化'min'任何東西,它包含一個隨機值(如0)。考慮像'if(count == 1)min = input'這樣的語句,這意味着在一個元素的數組中,元素是最小值。 – mniip

+0

我也試過這個。它現在只打印出我輸入的最後一個正整數。由於一些奇怪的原因,我無法讓它吐出最低的數字 – Jane

相關問題