2つの値と演算子を受け入れる簡単な "電卓"の例をテキストブックからコピーしました。ただし、入力された式が有効かどうかはチェックされません。適切な式が入力されるまで、コードはユーザーにプロンプトを表示する必要があります。Do ...論理演算子を使用したwhileループ
私のスタイルを念頭に置いてどうすればいいですか?これを行う良い方法は何ですか?
/*
Input: A simple expression with 2 values and 1 operator
Format: value1 (operator) value2
Ex: 5*5
Output: Answer
*/
#include <stdio.h>
int main (void)
{
float value1, value2;
char operator = ' ';
//Issue Area, the while section does not work
do
{
printf ("Type in your expression:");
scanf ("%f %c %f", &value1, &operator, &value2);
}
while ((operator != '+' || operator != '-' || operator != '*' || operator != '/'));
//This is fine, code is for an else...if example in textbook
if (operator == '+')
printf ("%.2f\n",value1 + value2);
else if (operator == '-')
printf ("%.2f\n",value1 - value2);
else if (operator == '*')
printf ("%.2f\n",value1 * value2);
else if (operator == '/')
printf ("%.2f\n",value1/value2);
return 0;
}
質問デバッグヘルプ(「なぜこれではない?コードは動作していますか? ")には、目的の動作、特定の問題またはエラー、および質問自体にそれを再現するのに必要な最短コードが含まれていなければなりません。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小、完全、および検証可能な例を作成する方法。 1 – Olaf
'&&'ではなく '||'が必要です。そうしないと、論理式は常に成功します。これは、 '!(operator == '+' || operator == ' - ' operator == '*' || operator == '/')' – lurker
と同等でなければなりません。 '||'を「or」と言います。 – Olaf