Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static bool checkString(string str)
{
bool isCorrect = true;
int s = 0;
if ((str[0] == '(' && (str[str.Length - 1] == '('))) s++;
if ((str[0] == ' ' && (str[str.Length - 1] == ' '))) s--;
if ((str[0] == '+' || (str[0] == '-' || (str[0] == '*' || (str[0] == '/'))))) isCorrect = false;
else if ((str[str.Length - 1] == '+' || (str[str.Length - 1] == '-' || (str[str.Length - 1] == '*' || (str[str.Length - 1] == '/'))))) isCorrect = false;
else if (((!Char.IsDigit(str[0])) || (!Char.IsDigit(str[str.Length - 1]))) && ((str[0] != '(' && (str[str.Length - 1] != ' ')))) isCorrect = false;
else for (int i = 1; i < str.Length - 2; i++)
{
if ((str[i] == '+' || (str[i] == '-' || (str[i] == '*' || (str[i] == '/')))))
{
if ((str[i + 1] == '+' || (str[i + 1] == '-' || (str[i + 1] == '*' || (str[i + 1] == '/'))))) isCorrect = false;
}
else if (!Char.IsDigit(str[i]) && (str[i] != '(' && (str[i] != ' '))) isCorrect = false;
if (str[i] == '(') s++;
if (str[i] == ' ') s--;
}
if (s == 0) isCorrect &= true;
else isCorrect &= false;
return isCorrect;
}
static void Main(string[] args)
{
string zn = Console.ReadLine();
int sum = 0; // тут будет формироваться результат выражения
char arefm_znak = ' ';
string str = ""; // строка в которой будет формироваться польская запись
if (checkString(zn) == false)
{
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();
}
}
}
ковырялся долго, разными способами пробывал....но не получается реализовать приоритет опраций, и что-то я с защитой на дурака перемудрил...выражения со скобками считает не верным....например

2+2)/(2*3-3) считает неверным(((
помогите пожайлуста....лаба горит, охото отмазаться от си шарпа и не париться с ним. не силен в общем я в программировании(((