Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52

Лексический анализ выражений. Формы записи выражений

07.05.2012, 07:33. Показов 5513. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане помогите пожалуйста с задачей:
Замечания:
Исходное выражение читают последовательно слева направо; к выделенным, таким образом, символам применяют табличные правила;
Правила построения ОПЗ рекурсивны, т.е. ОПЗ более сложных выражений описываются с помощью ОПЗ их более простых подвыражений;
Из правил вытекает, что порядок операндов в выражении и в ОПЗ одинаковый;
Порядок знаков операций изменяется:
во входном выражении вида a-b знак “–” предшествует операнду b, а в выходном выражении ab- наоборот.
Поэтому знак операции нужно запомнить, выдать второй операнд выражения, а затем уже вернуть знак операции.
Такое изменение порядка знаков достигается с использованием стека; знаки операций поступают в него и удаляются в ОПЗ по принципу «последним вошел - первым вышел» (LastIn - FirstOut, или LIFO);
На порядок знаков в ОПЗ влияет их старшинство, или приоритет. Операции “*” и “/” старше, чем “+” и “-”;
Операции имеют свойство левостороннего связывания;
Открывающая и соответствующая ей закрывающая скобки задают начало и конец выражения, все знаки операций которого должны появиться в ОПЗ раньше, чем знаки в стеке перед появлением открывающей скобки. Для отделения этих знаков открывающая скобка записывается в стек. При появлении на входе закрывающей скобки все знаки операций до открывающей скобки выталкиваются из стека в ОПЗ, а скобка удаляется из стека, т.е. скобки взаимно уничтожаются;
После того как выражение прочитано, в стеке ещё могут остаться знаки операций; их нужно записать в ОПЗ.
Все выше приведенные замечания необходимо учитывать в алгоритме построения ОПЗ.
Задание:
R=a-(b+c*d)/e a=3.1 b=5.4 c=0.2 d=9.6 e=7.8 R=2.16
Заранее спасибо!

Добавлено через 19 часов 59 минут
нашел пример, но переделать не получается. посмотрите плиз.

Пример: R=(a+b)*(c-d)/e –вводимое выражение;
а=3 b=5 c=6 d=9 е=7 –значения операндов.
Результат выполнения программы:
R=ab+cd-*e/
R=-3.42857
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include<stdio.h>
#include<stdlib.h>
 
/* Описание стpуктуpы(элемента стека) */
structst
{ charc;structst *next;};
structst *push(structst *, char); 
/* Пpототипыфункций */
char DEL(structst **);
int PRIOR(char);
 
void main(void)
{
/* Стекопеpацийпуст */
structst *OPERS=NULL;                     
char a[80], outstring[80];
int k, point;
do
  { puts("Введите выpажение(в конце '='):");
fflush(stdin);
    /* Ввод аpифметическоговыpажения */
gets(a);                                 
    k=point=0;
    /* Повтоpяем , пока не дойдем до '=' */
while(a[k]!='\0'&&a[k]!='=')           
{
    /* Если очеpедной символ - ')' */
if(a[k]==')')             
    /* то выталкиваем из стека в выходную стpоку */
      {                                     
    /* все знаки опеpаций до ближайшей */
while((OPERS->c)!='(')         
        /* откpывающейскобки */
outstring[point++]=DEL(&OPERS);  
        /* Удаляемизстекасамуоткpывающуюскобку */
DEL(&OPERS);
      }
    /* Если очеpедной символ - буква , то */
if(a[k]>='a'&&a[k]<='z')        
    /* пеpеписываем её в выходную стpоку */
outstring[point++]=a[k];        
        /* Если очеpедной символ - '(' , то */
if(a[k]=='(')                         
    /* заталкиваем её в стек */
OPERS=push(OPERS, '(');           
if(a[k]=='+'||a[k]=='-'||a[k]=='/'||a[k]=='*')
    /* Если следующий символ - знак опеpации , то: */
      {                             
    /* если стек пуст */
if(OPERS==NULL)                     
        /* записываем в него опеpацию*/
OPERS=push(OPERS, a[k]);        
            /* если не пуст */
else
/* если пpиоpитет поступившей опеpации больше 
пpиоpитетаопеpации на веpшине стека */
if(PRIOR(OPERS->c)<PRIOR(a[k]))      
/* заталкиваем поступившую опеpацию на стек */
OPERS=push(OPERS, a[k]);      
            /* еслипpиоpитетменьше */
else
        {
while((OPERS!=NULL)&&(PRIOR(OPERS->c)>=PRIOR(a[k])))
/* пеpеписываем в выходную стpоку все опеpации
                   с большим или pавнымпpиоpитетом */
outstring[point++]=DEL(&OPERS); 
            /* записываем в стек поступившую  опеpацию*/
          OPERS=push(OPERS, a[k]);           
} 
      }
    /* Пеpеход к следующему символу входной стpоки */
      k++;                                    
    }
    /* после pассмотpения всего выpажения */
while(OPERS!=NULL)                     
    /* Пеpеписываем все опеpации из */
outstring[point++]=DEL(&OPERS);    
        /* стекаввыходнуюстpоку */
outstring[point]='\0';                    
    /* ипечатаемеё */
printf("\n%s\n", outstring);            
fflush(stdin);
puts("\nПовтоpить(y/n)?");
} while(getchar()!='n');
}
 
/* Функция push записывает на стек (на веpшинукотоpого указывает HEAD)
   символ a . Возвpащает указатель на новую веpшину стека */
structst *push(structst *HEAD, char a)
{
structst *PTR;
/* Выделениепамяти */
if((PTR=malloc(sizeof(structst)))==NULL) 
{
/* Если её нет - выход */
puts("ет памяти");exit(-1);             
  }
/* Инициализация созданной веpшины */
  PTR->c=a;                                
/* и подключение её к стеку */
PTR->next=HEAD;           
/* PTR -новаявеpшинастека */
return PTR;                               
}
 
/* Функция DEL удаляет символ с веpшины стека.
Возвpащает удаляемый символ.
   Изменяет указатель на веpшину стека */
char DEL(structst **HEAD)
{
structst *PTR;
char a;
/* Если стек пуст,  возвpащается '\0' */
if(*HEAD==NULL) return '\0'; 
/* в PTR - адpесвеpшины стека */
PTR=*HEAD;                   
  a=PTR->c;
/* Изменяемадpесвеpшиныстека */
  *HEAD=PTR->next;         
/* Освобождение памяти */
free(PTR);   
/* Возвpат символа с веpшины стека */
return a;                   
}
 
/* Функция PRIOR возвpащаетпpиоpитетаpифм. опеpации */
int PRIOR(char a)
{
switch(a)
  {
case '*':
case '/':
return 3;
 
case '-':
case '+':
return 2;
 
case '(':
return 1;
}
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2012, 07:33
Ответы с готовыми решениями:

Лексический анализ выражений. Формы записи выражений
Уважаемые программисты помогите пожалуйста с заданием!!!!!!!!! Задание: Написать программу, представляющую математические выражения в...

Лексический анализ выражений. Формы записи выражений
Написать программу, представляющую математические выражения в форме обратной польской записи. Используя полученную бесскобочную форму...

Некоторый анализ кода CS с испольованием регулярных выражений
Привет.Мне нужно проанализировать файл формата *.cs. Я уже сделал некоторый анализ. Как мне подсчитать количество строк комментария и...

32
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
07.05.2012, 10:32
Что такое "
ОПЗ
Ладно, знаю я что это RPN, но задание надо лучше описывать, а то сиди и догадывайся.
"?
0
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52
07.05.2012, 11:31  [ТС]
могу скинуть методичку. если надо? там много теории. но задание именно такое как я написал
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
07.05.2012, 11:51
miki, не нужна мне методичка. Я так посмотрю вы не понимаете с чем имеете дело, раз не можете ответить на вопрос.
P.S. Синие слово у меня кликабельное, даже курсор изменяется при наведении на слово во-втором посте.
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
07.05.2012, 12:21
Вот, тут я выкладыаал свой вариант. Там только разбор выражения, и без переменных. Могу кинуть весь проект. Также помню, в книге Шилдта в конце есть прим5ер жанной программы, с поддержкой переменных.
0
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52
07.05.2012, 15:03  [ТС]
DimanRu, если можно. скиньте проект. спс
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
07.05.2012, 15:20
Лови, будут вопросы - задавай.
Вложения
Тип файла: rar OPN_Calc.rar (43.7 Кб, 88 просмотров)
0
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52
07.05.2012, 16:12  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
using System;
using System.Collections.Generic;
 
namespace OPN_Calc
{
    class Program
    {
        static double c;
 
        static void Main(string[] args)
        {
            for (; ; )
            {
                Console.Write("Введите выражение: ");
                string exp = Console.ReadLine();
 
                if (Checked(exp))
                {
                    string outStr = GetExp(exp);
 
                    Console.WriteLine("Ваше выражение в ОПН выглядит так: " + outStr);
 
                    Console.WriteLine("Значение выражения: " + Reshenie(outStr) + "\n");
                }
                //Console.ReadKey();
            }
        }
 
        static private bool Checked(string str)
        {
            int sum = 0;
 
            foreach (char ch in str)
            {
                if (ch == '(')
                    sum++;
                if (ch == ')')
                    sum--;
            }
 
            if (sum != 0 || IsDelimetr(str[0]) || IsDelimetr(str[str.Length - 1]))
            {
                Console.WriteLine("Error!");
                return false;
            }
            return true;
        }
 
        static private double Reshenie(string str)
        {
            Stack<double> resh = new Stack<double>();
 
            for (int i = 0; i < str.Length; i++)
            {
                if (Char.IsDigit(str[i]))
                {
                    string a = "";
 
                    while (!IsDelimetr(str[i])) //Пока не разделитель
                    {
                        a += str[i]; //Добаляем
                        i++;
                        if (i == str.Length) break;
                    }
                    resh.Push(double.Parse(a));
                    i--;
                    continue;
                }
                else if (IsOperator(str[i]))
                {
                    double a = resh.Pop();
                    double b = resh.Pop();
                    switch (str[i])
                    {
 
                        case '+': c = b + a; break;
                        case '-': c = b - a; break;
                        case '*': c = b * a; break;
                        case '/': c = b / a; break;
                        case '^': c = double.Parse(Math.Pow(double.Parse(b.ToString()), double.Parse(a.ToString())).ToString()); break;
                    }
                    resh.Push(c);
                }
            }
 
            return resh.Peek();
        }
 
        static private string GetExp(string str)
        {
            string outString = "";
            Stack<char> operStack = new Stack<char>();
 
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] == ' ') //Если пробел
                    continue; //пропускаем
 
                if (Char.IsDigit(str[i])) //Если число
                {
                    while (!IsDelimetr(str[i])) //Пока не разделитель
                    {
                        outString += str[i]; //Добаляем
                        i++;
                        if (i == str.Length) break;
                    }
                    outString += " ";
                    i--;
                    continue;
                }
 
                if (IsOperator(str[i]))
                {
                    if (operStack.Count > 0)
                        if (GetPriority(str[i]) <= GetPriority(operStack.Peek()))
                            outString += operStack.Pop().ToString() + " ";
 
                    operStack.Push(char.Parse(str[i].ToString()));
                }
 
                if (str[i] == '(')
                    operStack.Push(str[i]);
 
                if (str[i] == ')')
                {
                    char s = operStack.Pop();
 
                    while (s != '(')
                    {
                        outString += s.ToString() + ' '; //Тут была ошибка, вместо операторов добавлялась цифра (75)
                        s = operStack.Pop();
                    }
                }
            }
 
            while (operStack.Count > 0)
                outString += operStack.Pop() + " ";
 
            return outString;
        }
 
        static private bool IsOperator(char с)
        {
            if (("+-/*^".IndexOf(с) != -1))
                return true;
            return false;
        }
 
        static private byte GetPriority(char s)
        {
            switch (s)
            {
                case '(':
                    return 0;
                case ')':
                    return 1;
                case '+':
                    return 2;
                case '-':
                    return 3;
                case '*':
                    return 4;
                case '/':
                    return 4;
                case '^':
                    return 5;
                default:
                    return 6;
            }
        }
 
        static bool IsDelimetr(char c)
        {
            if ((" +-/*^()=".IndexOf(c) != -1))
                return true;
            return false;
        }
    }
}
а как переделать эту программу что бы она считала только вот это задание: R=a-(b+c*d)/e a=3.1 b=5.4 c=0.2 d=9.6 e=7.8 R=2.16 ?
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
07.05.2012, 16:24
1) Переменные она не поддерживает, нужно переделывать.
2) Нужно ввести выражение R=a-(b+c*d)/e
0
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52
07.05.2012, 16:31  [ТС]
а не знаете долго переделывать и какую часть именно нужно переделать? а то надо что бы конкретно только R=a-(b+c*d)/e a=3.1 b=5.4 c=0.2 d=9.6 e=7.8 R=2.16 это пример решал. такую не примут.
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
07.05.2012, 16:34
Тогда вообще все просто! Нужно создать отдельный метод, который будет заменять в строке R=a-(b+c*d)/e соответствующие переменные значениями, метод будет возвращать строку с числами, например: R=5-(1+3*78)/3 которую будет отправлять дальше.

Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
for (; ; )
{
    string exp = Peremennie(); //Метод возвращающий выражение, например R=5-(1+3*78)/3     
 
    if (Checked(exp))
    {
        string outStr = GetExp(exp);
 
        Console.WriteLine("Ваше выражение в ОПН выглядит так: " + outStr);
 
        Console.WriteLine("Значение выражения: " + Reshenie(outStr) + "\n");
    }
}
0
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52
07.05.2012, 16:47  [ТС]
а в куда конкретно кусок вашего кода скопировать в основной код ?
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
07.05.2012, 16:52
1) Заменить цикл for в методе Main
2) Создать метод Peremennie для обработки переменных.
0
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52
07.05.2012, 17:00  [ТС]
for заменил. а как создать метод и куда его скопировать в код? подскажите пожалуйста а то я незнаю c#
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
07.05.2012, 17:06
Цитата Сообщение от miki Посмотреть сообщение
а то я незнаю c#
А зачем вам тогда это задание?
0
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52
07.05.2012, 17:09  [ТС]
на учебе задали и сказали что должно быть обязательно на c#. на других языках нельзя сделать. вот и думаю как сделать
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
07.05.2012, 17:10
Вот:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
using System;
using System.Collections.Generic;
 
namespace OPN_Calc
{
    class Program
    {
        static double c;
        static str = "R=a-(b+c*d)/e"
 
        static void Main(string[] args)
        {
            for (; ; )
            {
                string exp = Peremennie(); //Метод возвращающий выражение, например R=5-(1+3*78)/3     
 
                if (Checked(exp))
                {
                    string outStr = GetExp(exp);
 
                    Console.WriteLine("Ваше выражение в ОПН выглядит так: " + outStr);
 
                    Console.WriteLine("Значение выражения: " + Reshenie(outStr) + "\n");
                }
            }
        }
 
        static private string Peremennie();
        {  
            // Считываем переменные
            Console.Write("Введите значение переменной a: ");
            int a = Console.ReadLine();            
            Console.Write("Введите значение переменной b: ");
            int b = Console.ReadLine();
            Console.Write("Введите значение переменной c: ");
            int c = Console.ReadLine();
            Console.Write("Введите значение переменной d: ");
            int d = Console.ReadLine();
            Console.Write("Введите значение переменной e: ");
            int e = Console.ReadLine();
 
            //Теперь в исходной строке - R=a-(b+c*d)/e - меняем буквы на цифры, тут я не помощник, попробую - скажу
            
            //Что-то вроде:
            
            string stoka = "";
            for (int i = 0; i < str.Length; i++)
            {
                if (Char.IsLetter(str[i]))
                {
                    switch(str[i].ToString())
                    {
                        case "a": stroka += a.ToString(); break;
                        case "b": stroka += b.ToString(); break;
                        case "c": stroka += c.ToString(); break;
                        case "d": stroka += d.ToString(); break;
                        case "e": stroka += e.ToString(); break;
                    }
                }
                else
                { 
                    stroka += str[i]; 
                }
            }
        }
 
        static private bool Checked(string str)
        {
            int sum = 0;
 
            foreach (char ch in str)
            {
                if (ch == '(')
                    sum++;
                if (ch == ')')
                    sum--;
            }
 
            if (sum != 0 || IsDelimetr(str[0]) || IsDelimetr(str[str.Length - 1]))
            {
                Console.WriteLine("Error!");
                return false;
            }
            return true;
        }
 
        static private double Reshenie(string str)
        {
            Stack<double> resh = new Stack<double>();
 
            for (int i = 0; i < str.Length; i++)
            {
                if (Char.IsDigit(str[i]))
                {
                    string a = "";
 
                    while (!IsDelimetr(str[i])) //Пока не разделитель
                    {
                        a += str[i]; //Добаляем
                        i++;
                        if (i == str.Length) break;
                    }
                    resh.Push(double.Parse(a));
                    i--;
                    continue;
                }
                else if (IsOperator(str[i]))
                {
                    double a = resh.Pop();
                    double b = resh.Pop();
                    switch (str[i])
                    {
 
                        case '+': c = b + a; break;
                        case '-': c = b - a; break;
                        case '*': c = b * a; break;
                        case '/': c = b / a; break;
                        case '^': c = double.Parse(Math.Pow(double.Parse(b.ToString()), double.Parse(a.ToString())).ToString()); break;
                    }
                    resh.Push(c);
                }
            }
 
            return resh.Peek();
        }
 
        static private string GetExp(string str)
        {
            string outString = "";
            Stack<char> operStack = new Stack<char>();
 
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] == ' ') //Если пробел
                    continue; //пропускаем
 
                if (Char.IsDigit(str[i])) //Если число
                {
                    while (!IsDelimetr(str[i])) //Пока не разделитель
                    {
                        outString += str[i]; //Добаляем
                        i++;
                        if (i == str.Length) break;
                    }
                    outString += " ";
                    i--;
                    continue;
                }
 
                if (IsOperator(str[i]))
                {
                    if (operStack.Count > 0)
                        if (GetPriority(str[i]) <= GetPriority(operStack.Peek()))
                            outString += operStack.Pop().ToString() + " ";
 
                    operStack.Push(char.Parse(str[i].ToString()));
                }
 
                if (str[i] == '(')
                    operStack.Push(str[i]);
 
                if (str[i] == ')')
                {
                    char s = operStack.Pop();
 
                    while (s != '(')
                    {
                        outString += s.ToString() + ' '; //Тут была ошибка, вместо операторов добавлялась цифра (75)
                        s = operStack.Pop();
                    }
                }
            }
 
            while (operStack.Count > 0)
                outString += operStack.Pop() + " ";
 
            return outString;
        }
 
        static private bool IsOperator(char с)
        {
            if (("+-/*^".IndexOf(с) != -1))
                return true;
            return false;
        }
 
        static private byte GetPriority(char s)
        {
            switch (s)
            {
                case '(':
                    return 0;
                case ')':
                    return 1;
                case '+':
                    return 2;
                case '-':
                    return 3;
                case '*':
                    return 4;
                case '/':
                    return 4;
                case '^':
                    return 5;
                default:
                    return 6;
            }
        }
 
        static bool IsDelimetr(char c)
        {
            if ((" +-/*^()=".IndexOf(c) != -1))
                return true;
            return false;
        }
    }
}
1
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52
07.05.2012, 17:28  [ТС]
большая проблема. выдает ошибки:
Миниатюры
Лексический анализ выражений. Формы записи выражений   Лексический анализ выражений. Формы записи выражений   Лексический анализ выражений. Формы записи выражений  

0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
07.05.2012, 17:30
ой, ну забыл сделать конвертацию, думал вы сами напишите)
C#
1
2
3
4
5
6
7
8
9
10
Console.Write("Введите значение переменной a: ");
int a = int.Parse(Console.ReadLine());            
Console.Write("Введите значение переменной b: ");
int b = int.Parse(Console.ReadLine());
Console.Write("Введите значение переменной c: ");
int c = int.Parse(Console.ReadLine());
Console.Write("Введите значение переменной d: ");
int d = int.Parse(Console.ReadLine());
Console.Write("Введите значение переменной e: ");
int e = int.Parse(Console.ReadLine());
P.S. Еще вроде есть ошибки, незнаю. Я просто в браузере писал.
0
0 / 0 / 1
Регистрация: 16.10.2011
Сообщений: 52
07.05.2012, 17:35  [ТС]
из 36 ошибок стало 31. а остальные остались
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2012, 17:35
Помогаю со студенческими работами здесь

Лексический анализатор для арифметических выражений
Всем привет. Помогите плиз сделать лексический анализатор на C# Задание: Исходный язык содержит арифметические выражения, разделенные...

Компилятор. Лексический анализ кода Pascal
Добрый день. Пишу лексический анализатор для кодов Pascal. И как вывести переменные которые используются в описание var? Тут есть...

Провести лексический анализ строки и сказать является ли она верным арифметическим выражением
Прошу сильно не пинать, т.к. только начал изучать дискретку. Есть некоторый алфавит состоящий из чисел типа double, и следующих...

Калькулятор выражений
Всем привет! Нужен калькулятор выражений типа 8*9*(3+1-9)\12, с приоритетами в скобках, знаков и пр. Спасибо

Деревья выражений
Здравствуйте, помогите пожалуйста разобраться с деревьями выражений. Хочу вызвать метод в который передаю List организаций, и три...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru