私はC++を学んでいます。C++の単純な機能のジレンマ
シンプルな「電卓」プログラム:文字入力をforbiden場合、値またはエラーを返す計算を、機能することを渡し、二つの数字と記号を読んでここに私の問題があります。私は私の機能の2つのバージョンを思い付いたと私は「正しいもの」であるかわかりません。ここで彼らは、次のとおりです。
まず一つは良い練習ではありません直接印刷は、(それはある?)ん。例えば、入力が「5」である場合、「6」、及び「 - 」には、-1を返します、それはによってミスとして処理される。
void calculate(int x, int y, char s) {
switch (s) {
case ('+'): {
std::cout << x + y << "\n";
}
case ('-'): {
std::cout << x - y << "\n";
}
case ('*'): {
std::cout << x * y << "\n";
}
case ('/'): {
std::cout << x/y << "\n";
}
default: {
std::cout << "Wrong sign input. Choose on of the following four:+-*/\n";
}
}
}
もう一つは、まだ唯一の仕事をして欠陥を有しています呼び出し側。
int calculate(int x, int y, char s) {
switch (s) {
case ('+'): {
return x + y;
}
case ('-'): {
return x - y;
}
case ('*'): {
return x * y;
}
case ('/'): {
return x/y;
}
default: {
return -1;
}
}
}
このシナリオでは、あなたはどんなことをしますか?
*発信者が誤って処理する*発信者を修正する。 IMHOの2番目の関数を使用する必要があります。計算と印刷は別々に行う必要があります。 – NathanOliver
2番目がエラーの場合は例外をスローするのが最善です。 –
-1結果と-1エラーをどのように伝えるか? – KOKO