Консольный калькулятор, где ошибка в условии - 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)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д