2016-12-04 12 views
0

INPUT 1 + 2-3 + 4 OUTPUT = 4C - 数字と文字(記号)の文字列を直接入力して電卓を作成するにはどうすればよいですか?

INPUT 1 + 2 + 3 + 4 OUTPUT = 10

INPUT -1-2-3-4 OUTPUT = -10

ここ

は私の試みですが、私は間違った結果に

コード断片を提供します:

for(i=0;i<strlen(res)+1;i++){ 
    if(res[i]=='-'||res[i]=='+'||res[i]=='\0'){ 
     num[z]='\0'; 
     dig=atoi(num); 
     if(x==0){ 
      sum=dig; 
      x++; 
     } 
     else{ 
      if(res[i]=='+') 
       sum=sum+dig; 
      else if(res[i]=='-') 
       sum=sum-dig; 
     } 
     z=0; 

    } 
    else{ 
     num[z]=res[i]; 
     z++; 
} 
return sum; 
+1

これは[Shunting-yardアルゴリズム](https://en.m.wikipedia.org/wiki/Shunting-yard_algorithm)の仕事です。 – ForceBru

答えて

0

を私はPRINを追加したいですtステートメントをコードに追加して、どこが間違っているのかを確認します。しかし、あなたが最後のヌル(res[i]=='\0')に着くと、最終的な数字をsumに加えないと、それは見えません。

私はnum、x、zの宣言と初期化子について仮定しています。そして、逃した}は字下げが意味するところです。

dig=atoi(num[z-1]); 

あなたのソリューションが動作しません:あなたがそれを変更した場合、固定されなければならない

dig=atoi(num); 

0

この行は、正しいインデックスを配列「NUM」を参照してではなく、 1桁以上の数値の計算に使用します。

関連する問題