-3

私の大学のためにこのスクリプトを実行しようとしています

int main()
{
int x;
double y;

Provo:
cout<<"Vlera e X: ";
cin>>x;
switch(x)
{
    case ((x)<(0.9)):
        y=x*x;
        break;
    case (x==0.9):
        y=2*x;
        break;
    case 'x>0.9':
        y=x-3;
        break;
}   
cout<<"\n\n";
return 0;
}

これはコードで、エラーは次のとおりです。

17  10  ....\Untitled1.cpp  [Error] 'x' cannot appear in a constant-expression

誰か助けてください?

4

1 に答える 1

3

ステートメントの使い方をswitch誤解していると思います。switch条件に基づいてコードを分岐するために使用されます。あなたの場合xは、異なる整数値を取ります。あなたのような double 値での使用には適していません。

正しいスイッチ式は次のようになります。

switch(x)
{
case 1:
    y=x*x;
    break;
case 2:
case 3:
case 4:
    y=2*x;
    break;
case 5:
    y=x-3;
    break;
}   

目的を達成するif elseには、代わりに次のように使用します。

if (x < 0.9) {
    y=x*x;
else if(x == 0.9) {
    y=2*x;
} else {
    y=x-3;
}   

ただし、浮動小数点値が等しいかどうかを比較することはお勧めできません。通常、次のようなことを行う方が適切です。

double epsilon = <some small value>;
if (x < 0.9-epsilon) {
    y=x*x;
else if(x > 0.9+epsilon) {
    y=x-3;
} else {
    y=2*x;
}
于 2013-10-26T16:34:29.450 に答える