Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C# В файле создать массив слов, в который поместить каждое слово в отдельную ячейку Здравствуйте! Только начал вникать в C#! Помогите написать программу для работы с текстом. Вот условие: В файле с разрешением *.txt есть текст, нужно создать массив слов в который поместить каждое слово в отдельную ячейку, игнорируя знаки припинания и пробелы. Потом надо посчитать сколько раз какое слово встретилось в тексте и сделать табличку типа: Слово кол-во привет 10 дом ... https://www.cyberforum.ru/ csharp-beginners/ thread553712.html C# Как использовать в приложениях браузерный движок WebKit
скачал браузерный движёк WebKit "http://webkit.org";но непойму как его добавить в библиотеку с#. подскажите
C# Покажите пример, как пользоваться стеком (Stack) https://www.cyberforum.ru/ csharp-beginners/ thread553689.html
Пожалуйста, покажите пример, как пользоваться стеком ? ( Stack ) Нужно создать отдельно аптеку и лекарства разные используя стек
C# Как найти указанный файл по маске? https://www.cyberforum.ru/ csharp-beginners/ thread553687.html
Код ниже работает. он находит файл "test_file.txt". Как сделать, чтобы он находил любой файл, который содержит имя "test"? using System; using System.IO; ... DirectoryInfo dir = new DirectoryInfo("C:\\Test_folder"); foreach (FileInfo file in dir.GetFiles("test_file.txt")) { listBox1.Items.Add(file.Name);
Консольное предложение на поиск одинаковых слов в предложении C#
Дано предложение. В нем только два слова одинаковые. Найти эти слова. Если слов одинаковых нет, то вывести сообщение об этом. Если одинаковых слов больше, то так же вывести сообщение. вот собственно такова задача. И все это нужно сделать через stringbulder. Через string.split уже сделал а вот через билдер не как не могу. Вот код через Сплит. Console.WriteLine("Введите предложение. После...
C# Описать класс ТОВАР https://www.cyberforum.ru/ csharp-beginners/ thread553577.html
Как это сделать??? Определить пользовательский класс в соответствии с вариантом задания. Определить в классе следующие конструкторы: без параметров, с параметрами, копирования. Написать демонстрационную программу, в которой создаются и разрушаются объекты пользовательского класса и каждый вызов конструктора сопровождается выдачей соответствующего сообщения (какой объект какой конструктор...
C# Удалить из строки определенные символы https://www.cyberforum.ru/ csharp-beginners/ thread553573.html
Привет всем. В текстовом файле есть такие строки: 1s21a161hh2#yfatelz.net;sborka Нужно удалить символы от # (включая ее) до ; (не включая ее) Как это можно сделать ? Если есть пример, поделитесь пожалуйста.
Программа рисует график синуса C#
Эта программа рисует график синуса. Как это же самое написать только в C#. Написано в Delphi procedure TForm1.Button1Click(Sender: TObject); var i,x,y:integer; begin PaintBox1.Canvas.Pen.Color:=clRed; PaintBox1.Canvas.MoveTo(50,PaintBox1.Height div 2); for i:=0 to 360 do begin x:=50+i; y:= PaintBox1.Height div 2 - Round(100*sin(i*Pi/180));
C# В числе зачеркнули первую справа цифру и приписали ее слева. Вывести полученное число https://www.cyberforum.ru/ csharp-beginners/ thread553537.html
Здравствуйте!!! Помогите пожалуйста вот с таким заданием на C# Дано трехзначное число. В нем зачеркнули первую справа цифру и приписали ее слева. Вывести полученное число.
C# Дано 10 вещественных чисел. Определить, не используя массивов количество элементов, больших первого количество элементов, больших первого.... using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace d3._2._8 { class Program { https://www.cyberforum.ru/ csharp-beginners/ thread553534.html
C# Сравнение строк без учета регистра букв
Здравствуйте. Имею код public static bool Search(ref ComplexElm elm, string value) { ... if (elm.Value == value) return true; ... } Пытаюсь сравнить без учета регистра, но получаю ошибку: public static bool Search(ref ComplexElm elm, string value) {
C# Отображать номер дня в году https://www.cyberforum.ru/ csharp-beginners/ thread553505.html
У кого есть пример данного кода киньте пожалуйста. Вот прототип формы: using Microsoft.Office.InfoPath; using System; using System.Windows.Forms; using System.Xml; using System.Xml.XPath; using mshtml;
1 / 1 / 0
Регистрация: 16.04.2012
Сообщений: 29
0

Принцип работы программы - "калькулятор-интерпретатор" - C# - Ответ 2935282

20.04.2012, 20:04. Показов 2186. Ответов 3
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Принцип работы программы - "калькулятор-интерпретатор" .
Например вводим в TextBox
" D=2+4 "
Нажимаем на кнопку
Результат выводиться в ListBox -> " 6 ".
На форме есть компоненты ListBox, TextBos и Button. Идет зацикливание. Не знаю как это исправить.
Кидаю сюда проект.
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
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace CalcTrans
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //public string expr;
       // Parser p = new Parser();
 
        //класс исключающий для ошибок для анализатора
        class ParserException : ApplicationException
        {
            public ParserException(string str) : base(str) { }
            public override string ToString()
            { return Message; }
        }
        class Parser
        {
            //перчисляем типы лексем.
            enum Types { NONE, DELIMITER, VARIABLE, NUMBER };
            // Перечисляем типы ошибок.
            enum Errors { SYNTAX, UNBALPARENS, NOEXP, DIVBYZERO };
 
            public string exp; // Ссылка на строку выражения,
            int expIdx; // Текущий индекс в выражении,
            string token; // Текущая лексема.
            Types tokType; // Тип лексемы.
 
            // Массив для переменных,
            double[] vars = new double[26];
 
            public Parser()
            {
                // Инициализируем переменные нулевыми значениями.
                for (int i = 0; i < vars.Length; i++)
                    vars[i] = 0.0;
            }
            // Входная точка анализатора.
            public double Evaluate(string expstr)
            {
                double result;
                exp = expstr;
                expIdx = 0;
                try
                {
                    GetToken();
                    if (token == "")
                    {
                        SyntaxErr(Errors.NOEXP); // Выражение отсутствует,
                        return 0.0;
                    }
                    EvalExp1(out result); // В этом варианте анализатора
                    // сначала вызывается
                    // метод EvalExpl().
                    if (token != "") // Последняя лексема должна
                        // быть нулевой.
                        SyntaxErr(Errors.SYNTAX);
                    return result;
                }
                catch (ParserException exc)
                {
                    // При желании добавляем здесь обработку ошибок.
                    Console.WriteLine(exc);
                    return 0.0;
                }
            }
 
            // Обрабатываем присвоение,
            void EvalExp1(out double result)
            {
                int varIdx;
                Types ttokType;
                string temptoken;
                if (tokType == Types.VARIABLE)
                {
                    // Сохраняем старую лексему,
                    temptoken = String.Copy(token);
                    ttokType = tokType;
                    // Вычисляем индекс переменной,
                    varIdx = Char.ToUpper(token[0]) - 'A';
                    GetToken();
                    if (token != "=")
                    {
                        PutBack();// Возвращаем текущую лексему в поток
                        //и восстанавливаем старую,
                        // поскольку отсутствует присвоение.
                        token = String.Copy(temptoken);
                        tokType = ttokType;
                    }
                    else
                    {
                        GetToken();// Получаем следующую часть
                        // выражения ехр.
                        EvalExp2(out result);
                        vars[varIdx] = result;
                        return;
                    }
                }
 
                EvalExp2(out result);
            }
 
            // Складываем или вычитаем два члена выражения.
            void EvalExp2(out double result)
            {
                string op;
                double partialResult;
 
                EvalExp3(out result);
                while ((op = token) == "+" || op == "-")
                {
                    GetToken();
                    EvalExp3(out partialResult);
                    switch (op)
                    {
                        case "-":
                            result = result - partialResult;
                            break;
                        case "+":
                            result = result + partialResult;
                            break;
                    }
                }
            }
 
            // Выполняем умножение или деление двух множителей.
            void EvalExp3(out double result)
            {
                string op;
                double partialResult = 0.0;
                EvalExp4(out result);
                while ((op = token) == "*" || op == "/" || op == "%")
                {
                    GetToken();
                    EvalExp4(out partialResult);
                    switch (op)
                    {
                        case "*":
                            result = result * partialResult;
                            break;
                        case "/":
                            if (partialResult == 0.0)
                                SyntaxErr(Errors.DIVBYZERO);
                            result = result / partialResult;
                            break;
                        case "%":
                            if (partialResult == 0.0)
                                SyntaxErr(Errors.DIVBYZERO);
                            result = (int)result % (int)partialResult;
                            break;
                    }
                }
            }
 
            // выполняем возведение в степень
            void EvalExp4(out double result)
            {
                double partialResult, ex;
                int t;
                EvalExp5(out result);
                if (token == "^")
                {
                    GetToken();
                    EvalExp4(out partialResult);
                    ex = result;
                    if (partialResult == 0.0)
                    {
                        result = 1.0;
                        return;
                    }
                    for (t = (int)partialResult - 1; t > 0; t--)
                        result = result * (double)ex;
                }
            }
            // Выполненяем операцию унарного + или -.
            void EvalExp5(out double result)
            {
                string op;
 
                op = "";
                if ((tokType == Types.DELIMITER) && token == "+" || token == "-")
                {
                    op = token;
                    GetToken();
                }
                EvalExp6(out result);
                if (op == "-") result = -result;
            }
 
            // обрабатываем выражение в круглых скобках
            void EvalExp6(out double result)
            {
                if ((token == "("))
                {
                    GetToken();
                    EvalExp2(out result);
                    if (token != ")")
                        SyntaxErr(Errors.UNBALPARENS);
                    GetToken();
                }
                else Atom(out result);
            }
            // Получаем значение числа или переменной.
            void Atom(out double result)
            {
                switch (tokType)
                {
                    case Types.NUMBER:
                        try
                        {
                            result = Double.Parse(token);
                        }
                        catch (FormatException)
                        {
                            result = 0.0;
                            SyntaxErr(Errors.SYNTAX);
                        }
                        GetToken();
                        return;
                    case Types.VARIABLE:
                        result = FindVar(token);
                        GetToken();
                        return;
                    default:
                        result = 0.0;
                        SyntaxErr(Errors.SYNTAX);
                        break;
                }
            }
            // Возвращаем значение переменной.
            double FindVar(string vname)
            {
                if (!Char.IsLetter(vname[0]))
                {
                    SyntaxErr(Errors.SYNTAX);
                    return 0.0;
                }
                return vars[Char.ToUpper(vname[0]) - 'A'];
            }
            // Возвращаем лексему во входной поток.
            void PutBack()
            {
                for (int i = 0; i < token.Length; i++) expIdx--;
            }
            // Обрабатываем синтаксическую ошибку
            void SyntaxErr(Errors error)
            {
                string[] err ={
                         "Синтаксическая оошибка",
                         "Дисбаланс скобок",
                         "Выражение отсутствет",
                         "Деление на нуль"};
                throw new ParserException(err[(int)error]);
            }
            // получем следующую лексему.
            void GetToken()
            {
                tokType = Types.NONE;
                token = "";
                if (expIdx == exp.Length) return; // Конец выражения.
                // Опускаем пробел.
                while (expIdx < exp.Length && Char.IsWhiteSpace(exp[expIdx])) ++expIdx;
                // Хвостовой пробел завершает выражение.
                if (expIdx == exp.Length) return;
                if (IsDelim(exp[expIdx]))
                {
                    token += exp[expIdx];
                    expIdx++;
                    tokType = Types.DELIMITER;
                }
                else if (Char.IsLetter(exp[expIdx]))
                {
                    // Это переменная?
                    while (!IsDelim(exp[expIdx]))
                    {
                        token += exp[expIdx];
                        expIdx++;
                        if (expIdx >= exp.Length) break;
                    }
                    tokType = Types.VARIABLE;
                }
                else if (Char.IsDigit(exp[expIdx]))
                {
                    // Это число?
                    while (!IsDelim(exp[expIdx]))
                    {
                        token += exp[expIdx];
                        expIdx++;
                        if (expIdx >= exp.Length) break;
                    }
                    tokType = Types.NUMBER;
                }
            }
            // Метод возвращает значение true,
            // если с -- разделитель.
            bool IsDelim(char c)
            {
                if (("+-/*%^=()".IndexOf(c) != -1))
                    return true;
                return false;
            }
        }
        public void button1_Click(object sender, EventArgs e)
        {
            string expr;
            Parser p =new Parser();
            p.exp = Convert.ToString(textBox1.Text);
            listBox1.Items.Add(p.exp);
            for (; ; )
            {
                //listBox1.Items.Add("Введите выражение: ");
                expr = Convert.ToString(textBox1.Text);
                if (expr == "") break;
                listBox1.Items.Add(p.Evaluate(expr));
            }
        }
 
    }
}


Вернуться к обсуждению:
Принцип работы программы - "калькулятор-интерпретатор" C#
Вложения
Тип файла: rar CalcTrans.rar (47.3 Кб, 44 просмотров)
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2012, 20:04
Готовые ответы и решения:

Правильный принцип работы программы
Хотелось бы узнать как правильным будет построить программу Есть обычный класс, в котором...

Поясните принцип работы данной программы
bool p = false, q = false; int i, j; for (i = 0; i &lt; 2; i++) ...

Поясните принцип работы данной программы. Она обрезает строку до указанной длины, и добавляет многоточие
class StringHelper { public static string TrimIt(string s, int max) { if (s == null)...

Принцип работы программы
Смысл программы: подсчет количества слов и предложений из подключенного файла. Код есть, только не...

Объясните принцип работы программы
доброго времени суток написал программу, она создает массив из чисел которые берет из edit1 и...

3
20.04.2012, 20:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2012, 20:04
Помогаю со студенческими работами здесь

Объясните принцип работы программы
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...

Объясните принцип работы программы
rem &quot;lab 5 z &quot; cls INPUT &quot;vvedite text: &quot;, a$ FOR i = 1 TO LEN(a$) \ 2 IF MID$(a$, i, 1) &lt;&gt;...

Объясните принцип работы программы
Добрый день ( вечер ). Мне дано было задание: Определить класс, объектами которого являются...

Объясните принцип работы программы
Добрый день, мне нужно понять, как работает эта программа (она находит самое длинное слово из...

Объясните принцип работы программы
непонимаю что за boolean, знаю что эта программа проверяет на ошибки матрицу function...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru