C# で入力された数式をもとに四則演算を行いたい
  
  
C#を利用してコンソールに数値、演算子を入力してその結果を表示したいです。

例

[code]

    入力⇒ 2+10×3+2 ...①
    結果⇒ 38
    
[/code]

・四則演算の優先順位は考えず、左から計算して結果を算出  
・入力者は①のような入力を一度で行い、その後Enterを押すと直ぐに結果を表示する（四則演算を別で入力させない）

※以下の方法は使用しない

[code]

    コンソール出力例
    ⇒数値を入力してください＞5
     もうひとつの数値を入力してください＞5
     演算子を入力してください＞+
     結果 10
    
[/code]

開発環境はVisual Studioです。

自身の考え方としては以下です。  
String型で読みとった文字列①をfor文で回し、1つずつ取り出します。  
取り出した文字をint.TryParse()で判定。  
（ここからどうすれば良いか分かりません）  
数値だった場合変数に格納？  
四則演算子であった場合if文で計算？

forループで取り出した文字を判定するまではコードをかけるのですが、その後の作成方法がよく分かりません。

よろしくお願いします。




> String型で読みとった文字列①をfor文で回し、1つずつ取り出します。  
>  取り出した文字をint.TryParse()で判定。

考え方は合ってます。

> 数値だった場合変数に格納？

格納しましょう。  
変数に格納しないとプログラムは値を保持できません。  
ただし **連続して数字を評価するロジック** に注意が必要です。

例えば"123"という文字を1つずつ取り出すとしましょう。  
変数`int j`をfor文の前に宣言し、"1"を評価した時に`j=1;`と代入したとします。  
次に"2"を評価した時、`j=j+2;`とすると`j+1+2;`の計算が行われて`j`の値は3になってしまいます。  
連続して数字を評価する場合はstring型の"123"をint型の123に変換しなければなりません。

これを実現する方法はいくつかありますので考えてみてください。

> 四則演算子であった場合if文で計算？

最終的にif文で計算しますが、ご提案のロジックではすぐに計算できません。

例えば"1+23-4"という文字を1つずつ取り出すとしましょう。  
変数`int j`に1を代入した後に`+`を評価した時、まだ`j`に足す値が確定できていません。  
足し算をしようとしても23が変数に入っていないため、`j+???`という状態になっています。

なので四則演算子であった場合および文字列の最後であった場合には、 **1つ前の四則演算子** をif文で計算するロジックが考えられます。  
つまり"1+23-4"を計算するロジックは下記の疑似コードの流れで計算できます。

[code]

    string siki = "1+23-4";
    int result = 1;         // 1文字目を評価して変数化
    string operator = "+";  // 2文字目が四則演算子なので、演算子を一時的に保存(まだ23を評価していない)
    int j = 23;             // 3,4文字目の連続した数値を変数化
    if(operator == "+") {   // 5文字目で次の四則演算子が出た時、1つ前の四則演算子で変数resultと変数jを加減乗除する
        result += j;        // if文で計算
    }
    operator = "-";         // 5文字目が四則演算子なので、演算子を一時的に保存(まだ4を評価していない)
    int j = 4;              // 6文字目を変数化
    if(operator == "-") {   // 最後に1つ前の四則演算子で変数resultと変数jを加減乗除する
        result -= j;        // if文で計算
    }
    
[/code]

これらの考え方を理解してfor文に書き換えることで目的の計算を実現できます。  
for文を1回ループするごとに、評価する文字は何か、変数には何が入っているのかを考えて整理することがポイントです。  
がんばってください。

