Консольный калькулятор, где ошибка в условии - C#
Формулировка задачи:
здравствуйте. сейчас делаю консольный калькулятор и что бы правильно все работало нужно хранить числа в массиве. Я получаю стороку, вводимую пользователем, и потом ее преобразую - вместо чисел вписываю их индексы в массиве. Я сначала загоняю числа в массив, а затем переписываю строку. Но вот в чем проблема - при изменении строки не выполняется проверка условия полностью (ну, на сколько я понял проблема с обработкой "(" и ")"). подскажите, в чем может быть дело? где я допустил ошибку?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace calcTest
{
class Program
{
static string formula;
static string skobka;
static void Main(string[] args)
{
Console.WriteLine("ввести формулу");
//принимаем формулу без знаков пробела
formula = Console.ReadLine().Replace(" ", "");
List<int> chisloMas = new List<int>() { };
char[] masChar = formula.ToCharArray();
chisloMas.AddRange(GetChislo(masChar));
formula = GetFormula(masChar);
Console.WriteLine("Ответ: " + formula);
Console.ReadLine();
}
static string GetFormula(char[] masChar)
{
string formula = "";
int chisla = 0;
string kolCifr = "";
int cifr = 0;
for (int i = 0; i < masChar.Length; i++)
{
if (uslovie(masChar[i])) //(masChar[i] != '+') && (masChar[i] != '-') && (masChar[i] != '*') && (masChar[i] != '/') && (masChar[i] != '(')
//&& (masChar[i] != ')'))
{
cifr++;
if (masChar.Length - 1 == i)
{
for (int j = 0; j < (cifr - 1); j++)
{
kolCifr += " ";
}
formula += kolCifr + chisla;
}
}
else
{
for (int j = 0; j < (cifr - 1); j++)
{
kolCifr += " ";
}
formula += kolCifr + chisla + masChar[i];
cifr = 0;
chisla++;
}
}
return formula;
}
static List<int> GetChislo(char[] masChar)
{
//получение индексов чисел в строке, в порядке их следования
List<int> chisloMas = new List<int>() { };
string chislo = "";
for (int i = 0; i < masChar.Length; i++)
{
if (uslovie(masChar[i])) //(masChar[i] != '+') && (masChar[i] != '-') && (masChar[i] != '*') && (masChar[i] != '/') && (masChar[i] != '(') && (masChar[i] != ')'))
{
chislo += masChar[i];
if (masChar.Length - 1 == i)
{
chisloMas.Add(Convert.ToInt32(chislo));
}
}
else
{
chisloMas.Add(Convert.ToInt32(chislo));
chislo = "";
}
}
return chisloMas;
}
static bool uslovie (char sim)
{
//проверка условия
bool rez = false;
if ((sim != '+') && (sim != '-') && (sim != '*') && (sim != '/'))
{
if ((sim != '(') && (sim != ')'))
rez = true;
}
else rez = false;
return rez;
}
}
}Решение задачи: «Консольный калькулятор, где ошибка в условии»
textual
Листинг программы
1 + 2 << 4 - 7 - (45 * 5)