Польская запись с защитой от дурака - C#

Узнай цену своей работы

Формулировка задачи:

в общем тема такая. не могу написать защиту полность. например: почему-то не работает защита от неверного кол-ва закрывающихся скобок, или когда ставишь 2 подряд операции (++, // и т.д.) со операциями в конце и в начале вроде работает.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int s = 0; int i;
            string zn = Console.ReadLine();
 
            int sum = 0;  // тут будет формироваться результат выражения
            char arefm_znak = ' ';
            string str = ""; // строка в которой будет формироваться польская запись
            //защита от неверного ввода арефметического знака
            char znak = ' ';
            int flag = 0;
            for (i = 0; i < zn.Length; i++)
            {
                if (zn[i] == '+' || zn[i] == '-' || zn[i] == '/' || zn[i] == '*')
                {
                    if (flag != 0)
                        flag = 0;
                    else
                        Console.WriteLine(" Не Верно");

                }
                if (zn[i] >= '0' && zn[i] <= '9')
                    flag = 1;
 
            }
            if (flag == 0) //проверка на лишние арефметические знаки в конце.
                Console.WriteLine(" Не Верно");
            //защита от неверного количества скобок
            for (i = 0; i < zn.Length; i++)
            {
                if (zn[i] == '(')
                {
                    s = s + 1;
                }
                if (zn[i] == ')')
                {
                    s = s - 1;
                }
            }
            if (s != 0)
            {
                Console.WriteLine(" Не Верно");
            }
 
            else
            {
 
                foreach (char ch in zn)
                {
                    if (ch >= '0' && ch <= '9')
                    {
                        if (arefm_znak == ' ')
                        {
                            sum = int.Parse(ch.ToString());
                            str += sum.ToString() + ' ';
                        }
                        else
                        {
                            if (arefm_znak == '-')
                                sum -= int.Parse(ch.ToString());
                            if (arefm_znak == '+')
                                sum += int.Parse(ch.ToString());
                            if (arefm_znak == '*')
                                sum *= int.Parse(ch.ToString());
                            if (arefm_znak == '/')
                                sum /= int.Parse(ch.ToString());
                            str += ch.ToString() + ' ' + arefm_znak.ToString() + ' ';
                        }
                    }
                    else
                        if (ch == '-' || ch == '+' || ch == '*' || ch == '/')
                            arefm_znak = ch;
                }

                Console.WriteLine("{0} = {1}", str, sum);
            }
            Console.ReadKey();
        }
    }
}

Решение задачи: «Польская запись с защитой от дурака»

textual
Листинг программы
for (i = 0; i < zn.Length; i++)
{
    if (zn[i] == '+' || zn[i] == '-' || zn[i] == '/' || zn[i] == '*')
    {
        if (flag == 1)
            Console.WriteLine(" Не Верно");
        flag = 1;
    }
    if (zn[i] >= '0' && zn[i] <= '9')
        flag = 0;
}

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


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

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

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