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