2017-04-02 61 views
-3

我不知道爲什麼if語句說「數字接近」沒有運行?如果兩個數字之間的差異介於1和100之間,它應該運行一個if語句

我已經用數字測試它以創建1-100之間的差異。

任何想法?

#include <iostream> 
#include <cmath> 
#include <algorithm> 
using namespace std; 

int main() 
{ 
    double num1, num2, difference; 


    while(num1 != 100 || num2 != 200) 
    { 
     cout << "Enter a number:" << endl ; 
     cin >> num1 ; 
     cout << "Enter a 2nd number: " << endl ; 
     cin >> num2 ; 
     if (num1 == num2) 
      { cout << "the numbers are equal" << endl ; 
      } 
     else if (num1 > num2) 
     { cout << "The larger number is num1:" << num1 << endl ; 
      cout << "The smaller number is num2:" <<num2 << endl; 
      difference = num1- num2; 
      if (difference <100 && difference > 1) 
      { 
      cout << "Numbers are almost equal\n" ; 
      } 
      else 
      {} 
     } 
    else if (num2 - num1) 
     { cout << "The larger number is num2:" << num2 << endl ; 
      cout << "The smaller number is num1:" <<num1 << endl; 
     } 



    } 
    return 0; 
} 

親切的問候,

+2

'while(num1!= 100 || num2!= 200) - 未定義的行爲。這些變量永遠不會被初始化。 –

回答

0

而不是

difference = num1- num2; 

你需要

difference = fabs(num1- num2); 

否則測試 「親密」 將只在num1num2更大。

還要確保num1num2while循環之前被初始化。

double num1 = 0; 
double num2 = 0; 
double difference = 0; // Just for consistency 

while (...) 
{ 
    ... 
} 
0

您應該使用abs來獲得2個數的差值的絕對值。

此外,你的外觀也有一些問題,主要是調用沒有給出值的變量,然後嘗試下面的代碼,它應該做你想做的事情。

#include <iostream> 
#include <cmath> 
#include <string> 

using namespace std; 

int main() { 

    bool again = true; 

    while(again){ 
    double num1, num2, diffrence; 
    cout << "Enter a Number: " << endl; 
    cin >>num1; 
    cout << "Enter a 2nd Number: " << endl; 
    cin >> num2; 

    diffrence = abs(num1-num2); 

    if(diffrence==0){ 
     cout << "the numbers are equal"; 
    }else{ 
     if(num1>num2){ 
     cout << "the larger number is num1: " << num1 << endl; 
     cout << "the smaller number is num2: " << num2 << endl; 
     }else{ 
     cout << "the larger number is num2: " << num2 << endl; 
     cout << "the smaller number is num1: " << num1 << endl; 
     } 
     if(diffrence<100){ 
     cout << "Numbers are almost equal\n"; 
     }else{ 
     cout << "Numbers are not even close"; 
     } 
    } 
    cout << "Try again (y/n)?" << endl; 
    char response; 
    cin >> response; 
    if(tolower(response)=='n'){ 
     again = false; 
    } 
    } 
    return 0; 
} 

auto x = main();