1

他の 2 つの変数は使用できますが、何らかの理由で、最後の while ステートメントで met 変数を関数として使用できません。コンパイルすると次のエラーが表示されます: '(met <= 2.0e+1)' cannot be used as a function|. これを修正するにはどうすればよいですか?

// Garbage Collection. Michael Heusner.
#include <iostream>
#include <cmath>

using namespace std;

int main(){
int reg_lim, met_lim, glass_lim;
double reg, glass, met;
double total;
double reg_ratio, glass_ratio, met_ratio;

reg_lim= 50;
glass_lim= 20;
met_lim= 20;


cout << "How much regular, glass, and metal garbage do you have?" << endl;
cin>> reg;
cin>> glass;
cin>> met;

total= met+glass+reg;

cout<< "The total number of bags is "<< total<< endl;

met_ratio= met/total;
reg_ratio= reg/total;
glass_ratio= glass/total;

cout<< "The metal ratio is "<< met_ratio<< endl;
cout<< "The glass ratio is "<< glass_ratio<< endl;
cout<< "The regular ratio is "<< reg_ratio<< endl;
if( met==reg==glass)
{
cout<< "All garbage amounts are the same."<< endl;
}
else if (reg> glass && met)
{
cout<< "Regular is the largest."<< endl;
}
else if (glass> met && reg)
{
cout<< "Glass is the largest."<< endl;
}
else if (met> glass && reg)
{
cout<< "Metal is the largest."<< endl;
}


while( reg <= 50) (met <= 20)  (glass <= 20);{
4

3 に答える 3

3
while( reg <= 50) (met <= 20)  (glass <= 20);{

あなたの問題でしょう!

これは有効な while ループ ステートメントではありません。

代わりに、次のように書く必要があります。

while (( reg <= 50) && (met <= 20) && (glass <= 20)) {
//Statements for loop
}
于 2012-09-30T23:25:25.750 に答える
3

いくつかの括弧のバランスを取り、そのwhile()条件にいくつかの論理演算子を追加することができます。これを行うと、おそらく左中括弧の前のセミコロンを失うとreg、 、met、およびの適切な値で実行を開始しようとしている無限ループが実際に中断されますglass

while (( reg <= 50) && (met <= 20) && (glass <= 20))
{
}
于 2012-09-30T23:22:35.133 に答える
2

&&条件を連鎖させるために使用する必要があります。

while ((reg <= 50) && (met <= 20) && (glass <= 20))

if以前のステートメントにも同様の問題があります。

if( met==reg==glass)

これは次のようになります。

if ((met==reg) && (reg==glass))

ただし、これらは浮動小数点数であるため、代わりに最小の差だけが異なることを確認する必要があります。

于 2012-09-30T23:22:53.147 に答える