2017-11-28 19 views
0

私は非常に新しいので、初心者の質問を許してください。私はコードをコンパイルしようとしましたが、実行されますが、半径(r)が入力された後に値を返しません。関数を型Voidに変更してcoutを使うと、それは動作します。私はそれが通常のタイプの二重機能で動作するようにしたいと思います。副次的な質問として、私がオプトアウトを試みると、もう一度やり直すことはできません。すなわち、yの代わりにnを入力することによって行われる。値を返さない関数(C++)

double const pi=3.1415; 
double r=0.0; 
char ans; 

do { 
    cout << "Please enter in the radius\n"; 
    cin >> r; 

    area(pi, r); 
    circumference(pi, r); 

    cout << "Would you like to try again?\n"; 
    cin >> ans; 

} while (ans=='y'||'Y'); 



return 0; 
} 

double area(double pi, double r) 
{ 
double area_2=(pi*pow(r,2)); 
return area_2; 

} 

double circumference(double pi, double r) 
{ 

double circumference_2=(2*pi*r); 
return circumference_2; 

}

答えて

0

論理またはオペレータは、このように動作します:Aがtrueの場合、またはBがtrueの場合はtrue、我々はその後、A || B結果を考えてみましょう。

そして、C++ではゼロ以外のものはすべてtrueです。条件ans=='y'||'Y'は基本的にans=='y'||trueに相当します。言い換えれば、それは常に真実です。これはあなたが無限ループを持つことを意味します。

代わりにans == 'y' || ans == 'Y'が必要です。

1

簡単に言えば、関数は値(double)を返すように記述されていますが、本質的に何も印刷しません。

いずれかを使用:関数自体に

cout << area(pi, r); 

またはCOUT。希望が役立ちます。

+0

ありがとう!私はメインの中であなたのソリューションを使用し、それは働いた –