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

Cинтаксический анализ (разбор) арифметического выражения (a-b)^2 по заданному шаблону

30.08.2019, 13:14. Показов 1710. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать программу, реализующую простейший синтаксический
анализ (разбор) арифметического выражения (a-b)^2 по заданному
шаблону и вычисляющую его по заданным аргументам.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.08.2019, 13:14
Ответы с готовыми решениями:

Разбор арифметического выражения
Друзья, требуется написать программу на С#, которая работала бы следующим образом: пользователь вводит в консольное окно арифметическое...

Разбор арифметического выражения
Доброго времени суток. Возникла такая проблема - нужно разобрать и вычислить арифметическое выражение, считанное одной строкой. ...

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

10
Эксперт .NET
 Аватар для Usaga
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
30.08.2019, 13:16
devochk, посмотрите на это и попробуйте повторить на шарпах.
0
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 84
30.08.2019, 13:25  [ТС]
Вот как то так у меня есть программа, но у меня ошибка в 46 строчке
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
 
        }
 
        private void TextBox1_TextChanged(object sender, EventArgs e)
        {
            string s = textBox1.Text;
            int b, a;
            double sum1 = 0, sum2 = 0;
            // (a - b) ^ 2 
            // (452 - 65) ^ 2 
            if (s.Length >= 7)
            {
                int x = s.IndexOf('(');
                if (x > 0)
                {
                    int y = s.IndexOf('-');
 
                    if (y > 0)
                    {
                        int z = s.IndexOf(')');
 
                        if (z > 0 && (z + 1) <= (s.Length - 1) && s[z + 1] == '^' && (z + 2) <= (s.Length) && s[z + 2] == '2')
 
                        string c = s.Substring(x + 1, y);
                        string d = s.Substring(y, z-y);
 
                        if (d.Length > 0)
                        {
                            bool p1 = Int32.TryParse(c, out a);
                            bool p2 = Int32.TryParse(d, out b);
                            if (p1 && p2)
                            {
                                b = Convert.ToInt32(c);
                                a = Convert.ToInt32(d);
                                {
                                    sum1 = Math.Pow(a - b, 2);
 
                                    label1.Text = sum1.ToString();
                                }
 
                            }
                            }
                        }
                    }
                }
            }
        }
    }
0
Эксперт .NET
 Аватар для Usaga
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
30.08.2019, 13:27
devochk, ну так исправьте её.
0
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 84
30.08.2019, 13:30  [ТС]
я не знаю как,я б конечно бы уже исправила давно
0
Эксперт .NET
 Аватар для Usaga
14078 / 9295 / 1347
Регистрация: 21.01.2016
Сообщений: 34,895
30.08.2019, 13:33
devochk, начните с анализа текста исключения или сообщения от компилятора. Там всё сказано.
0
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 84
30.08.2019, 13:43  [ТС]
пишет что внедренный оператор не может быть объявлением или оператором с идентификатором
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
30.08.2019, 14:42
Цитата Сообщение от devochk Посмотреть сообщение
пишет что внедренный оператор не может быть объявлением или оператором с идентификатором
потому что для if нужно указать область видимости (через скобки фигурные), иначе то будет только следующая за ним строка, а в Вашем примере это недопустимо
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,035
Записей в блоге: 2
30.08.2019, 15:05
Цитата Сообщение от devochk Посмотреть сообщение
анализ (разбор) арифметического выражения (a-b)^2 по заданному
шаблону
Если шаблон постоянен, то есть меняются ТОЛЬКО a и b, то можно так (без проверок на ошибки)
C#
1
2
3
4
5
        static double CalcAB2(string value)
        {
            string[] values = value.Split("( )-^".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            return Math.Pow(double.Parse(values[0]) * double.Parse(values[1]), 2);
        }
0
0 / 0 / 0
Регистрация: 20.01.2019
Сообщений: 84
30.08.2019, 15:14  [ТС]
мы так никогда не делали, как вариант можно, но не для моего случая
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16115 / 11236 / 2887
Регистрация: 21.04.2018
Сообщений: 33,035
Записей в блоге: 2
30.08.2019, 15:19
Цитата Сообщение от devochk Посмотреть сообщение
мы так никогда не делали, как вариант можно, но не для моего случая
Ну, у вас вроде тоже самое делается только гораздо сложнее.

И неточность в моём коде - вместо вычитания применил умножение
C#
1
2
3
4
5
        static double CalcAB2(string value)
        {
            string[] values = value.Split("( )-^".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            return Math.Pow(double.Parse(values[0]) - double.Parse(values[1]), 2);
        }
Добавлено через 1 минуту
Использование метода
C#
1
2
        private void TextBox1_TextChanged(object sender, EventArgs e)
             label1.Text => CalcAB2(textBox1.Text).ToString();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.08.2019, 15:19
Помогаю со студенческими работами здесь

Разбор арифметического выражения и его вычисление
Имеется программа для решения квадратных уравнений #include &lt;stdio.h&gt; #include &lt;math.h&gt; int main(int argc, char *argv) { float...

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

Разбор строки по шаблону
Может у кого то есть, поэтому сначала задам вопрос: Требуется написать функцию которая проверяет есть ли вхождение шаблона (вид шаблона:...

Форматирование текста по заданному шаблону
Здравствуйте, товарищи! Вот решил я, что пора посоветоваться с кем-нибудь, ибо есть у меня СуперЗадача :D На работе у нас установлен...

Создать матрицу по заданному шаблону
Ребят кому не тяжело, помогите пожалуйста написать программу В общем нужно задать размер матрицы, что бы в ней главная и побочная...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru