Консольный калькулятор, где ошибка в условии - 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)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы