に直接行きます。コードに問題があります。それはエラーなしでコンパイルされますが、正しい値であってもユーザーからの入力を受けた直後に、最初の条件文をスキップしてELSEに直接行き、プログラムを終了させます。私はこの行動の原因を見つけることができないようです。入力後、私のプログラムは最初のIF文をスキップして、ELSE
私はそれが条件文が構築されている方法の問題かもしれないと思う: if(((S <= 25 && S <= 75) % 5 == 0) && (U < 0.2 && U < 0.7)){
は私が入力した値が25 <= S <= 75
で、5で割り切れるかどうかを確認する必要があるだけでなく、他の値が0.2 < U < 0.7
//#include "stdafx.h" // Header File used VS.
#include <iostream>
//#include <iomanip> // Used to format the output.
#include <cstdlib> // Used for system().
#include <math.h> // Used for sqrt().
using namespace std;// ?
int main(){
int S; // Gram/Litre
double U; // Specific Max. Growth Rate. Per Hour.
double D; // Maximum Dilution Rate.
const int K = rand() % 7 + 2; // Saturation Constant - Randomly Gegerated Number Between 2 & 7. In Hour/Litre.
cout << "Enter value between 25 and 75, divisible by 5, for S in Gram/Litre: ";
cin >> S;
cout << "Enter value bigger than 0.2, but less than 0.7, for U per Hour: ";
cin >> U;
if(((S <= 25 && S <= 75) % 5 == 0) && (U < 0.2 && U < 0.7)){ // Check Condition ***May Need Adjustments***
D = U * (1 - sqrt (K/(K + S))); // Might have to adjust values to fit data type double. Add .00
cout.precision(3); // Prints 3 values after decimal point.
cout << "Maximum dilution rate is: " << D << endl;
if(D < 0.35 && D < 0.45){
cout << "Kinetic parameters are acceptable." << endl;
}
else{
cout << "Kinetic parameters are not acceptable." << endl;
}
}
else{
cout << "Invalid Input. Program will now terminate." << endl;
}
system("PAUSE"); // Pauses the program before termination.
return 0;
}
'cin 'のようなサウンドは正しくクリアされていません:http://stackoverflow.com/q/20913785/477563 –
' S <= 25'はあなたの説明と一致しません。また '(S <= 25 && S <= 75)'の結果が 'S'自体ではなく5で割り切れるかどうかをチェックします。 あなたの条件を分割して、異なる部分の値を 'bool isSInRange =(25 <= S && S <= 75);のように一時的に保存したいかもしれません。 –
もう1つ質問がありますが、変数 'D'を表示すると、代わりに' U'の値が表示されるようです。私は数学で何の問題も見ません。D = U *(1 - sqrt(K /(K + S))); 'cout.precision(3);' 'cout <<"最大希釈率は次のとおりです: "<< D << endl;何が原因だろうか? –