2016-10-30 13 views
-1

私はC++プログラミングの初心者です(私はその1週間です)、私は基本的な電卓を作ろうとしています。コードを実行しようとするたびに、私は0を得ます。私はこの部分に特に問題があります:C++で電卓を作っています

ボーナス質問:また、スイッチで文字列を使用する方法はありますか?

int finalnumber; 
char number(int firstnumber, int secondnumber, int finalnumber, char operation); 

char number(int firstnumber, int secondnumber, int finalnumber, char operation) 
{ 
    switch (operation) 
    { 
    case '+': 
     finalnumber = firstnumber + secondnumber; 
     break; 

    case '-': 
     finalnumber = firstnumber - secondnumber; 
     break; 

    case '*': 
     finalnumber = firstnumber * secondnumber; 
     break; 

    case '/': 
     finalnumber=firstnumber/secondnumber; 
     break; 

    default: 
     cout << "pls eneter a valid operation"; 
    } 
    return finalnumber; 
} 
+2

まず[、最小完全、かつ検証例]を作成してみてください(のhttp://stackoverflow.com/help/mcve)、この関数をどのように呼び出すか値。第2に、 'switch'ステートメントで文字列を使用することはできません。 –

+2

'main()'関数を見ることはできますか?また、 'char'を返す関数で' int'を返すのはなぜですか? – Bim

+0

入力する/期待する出力 – Treycos

答えて

2

"finalnumber"をメソッドのパラメータとして渡す必要はありません。メソッド内でパラメータを宣言するとよいでしょう。

スイッチケースに文字列を使用することはできませんが、enumを宣言して使用すると、Googleで試してみることができますが、最初は簡単にすることをおすすめします。

あなたの方法は、あなたが良い精度を必要と入力はまた、二重でなければなりません(または、第1分割(* 1.0 /秒)を行う際に1.0で最初に乗じて回ることができ、二重場合は、戻り値の型でなければなりません。

double calculator(double first, double second, char sign) 
{ 
    double result = 0; 

    switch (sign) 
    { 
    case '+': 
     result = first + second; 
     break; 

    case '-': 
     result = first - second; 
     break; 

    case '*': 
     result = first * second; 
     break; 

    case '/': 
     result = first/second; 
     break; 

    default: 
     std::cout << "Please enter a valid operation."; 
    } 
    return result; 
} 
この場合には、私が考えるより柔軟性があるので、オペレータあれば使用することをお勧めします。このような状況で
+0

私はビットを最適化したい場合は "結果"を宣言する必要もなく、 "first + = second"(など)と一緒に行くことができます。 –

0

#include "stdafx.h" 
#include <iostream> 
using namespace std; 


int main() 
{ 

start: 
    printf("This program is Calculator, Works only for integer\nEnter First Number\n"); 
    int a, exp; 
    cin >> a; 
    exp = a; 
    printf("Enter the Operation (+,-,*,/,Shift + 5 for percent,^)\n--->>"); 
    char b; 
    cin >> b; 
    printf("Enter the Second Number\n--->>"); 
    int c; 
    cin >> c; 
    int d; 
    if (b == '-') 
    { 
     d = a - c; 
     printf("%i - %i = %i \n\n", a, c, d); 
    } 
    else if (b == '+') 
    { 
     d = a + c; 
     printf("%i + %i = %i \n\n", a, c, d); 

    } 
    else if (b == '/') 
    { 
     d = a/c; 
     printf("%i/%i = %i \n\n", a, c, d); 

    } 
    else if (b == '*') 
    { 
     d = a * c; 
     printf("%i * %i = %i \n\n", a, c, d); 

    } 
    else if (b == '%') 
    { 
     d = a * (c/100);        
     printf("%i's %i percent is %i \n\n", a,c,d); 
    } 
    else if (b == '^') 
    { 
     int k = 1; 

     if (c == k) 
     { 
      d = a; 
      printf("%i^%i = %i \n\n", a, c, d); 
     } 
     else if (k < c) { 
      exponent: 
      k = k + 1; 
      a = a * exp; 
      d = a; 
     if (k < c) { 
      goto exponent; 
     } 
     else if (k = c) { 
      printf("%i^%i = %i\n\n", exp, c, d); 
     } 

     } 


     } 




    goto start; 
    return 0; 
} 
関連する問題