3 / 3 / 0
Регистрация: 18.11.2017
Сообщений: 26
|
|
1 | |
Сделать калькулятор арифметического выражения30.04.2020, 11:11. Показов 6091. Ответов 35
Вот такое мне дали задание:
Написать подпрограмму–функцию Form(S, X, Y), где S – строка, Х и Y – вещественные переменные. В строке записано арифметическое выражение, содержащее переменные Х и Y, константы (целые или вещественные), операции +, -, *, /. Порядок операций определен скобками. Подпрограмма– функция возвращает значение арифметического выражения при заданных значениях Х и Y Совершенно не понимаю, как эту строку преобразовать в арифметическое выражение для крестов и как посчитать. А ещё я ненавижу свою жизнь, хотя поводы для этого пустяковые.
1
|
30.04.2020, 11:11 | |
Ответы с готовыми решениями:
35
Расчет арифметического выражения Вычисление арифметического выражения Чтение арифметического выражения из файла Вычислить значение арифметического выражения |
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
|
|
30.04.2020, 11:38 | 2 |
0
|
Just Do It!
|
||||||
30.04.2020, 12:10 | 3 | |||||
Сообщение было отмечено DeveloperS73 как решение
Решение
DeveloperS73,
1. сам калькулятор можно взять отсюда: Пытаюсь сделать калькулятор со вводом в одну строку, начал с прибавления, не хочет выводить конечный результат с функции 2. Написать функцию генератора строки в которой будут подставляться значения вместо X и Y:
Добавить пункт 1 в пункт 2. Добавлено через 6 минут жизнь тоже можно программировать, а если хотца чтобы жизнь вас радовала, то и нужно ... ещё советские "ламповые" калькуляторы эту хрень перестали поддерживать на уровне юзера. а если у вас строка, то тут обязательно где-то рядом будет уровень того, кто этим будет пользоваться.
1
|
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
|
|
30.04.2020, 13:33 | 4 |
0
|
3 / 3 / 0
Регистрация: 18.11.2017
Сообщений: 26
|
|
30.04.2020, 13:39 [ТС] | 5 |
0
|
Just Do It!
|
|
30.04.2020, 13:52 | 6 |
ну да, вы конеш, можете прибить гвоздями внутря проги формулы в польской нотации
и в ваше кюте сделать меню, типа: 1.Расчет полинома Ньютона. 2.Подсчитать периметр круга 3.Сделать преобразование Фурье. + ещё 100500 пунктов в меню, вроде как на все случаи жизни. Но юзверь, на то и юзверь: у него полно своих формул, которые вы НИКОГДА, не сможете ЗАШИТЬ в свою прогу! Но можно сделать, что он легко сможет редактировать свои формулы на принятом всем миром матоязыке. И тут БАХ, вы ему свою потому, что, видите ли, вам так было проще кодировать. Добавлено через 5 минут Не по теме: блин, выкиньте всю такую хрень из своей головы! аферисты экзотерики запускют чайники на орбиту, и прошивают своим адептам моск, мол, они там есть и летают. И ни доказать, и ни опровергнуть того нельзя! мне ещё можно читать такую белиберду, т.к. я прошёл тест на устойчивость психики к чёрной магии, но для большинства москов любая экзотерика разрушительна!
1
|
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
|
|
30.04.2020, 13:58 | 7 |
0
|
Just Do It!
|
|
30.04.2020, 14:00 | 8 |
уровня может и вовсе не быть никакого,
если вашей прогой НИКТО не будет пользоваться. о боже, вы для кого код пишите? для себя? ну возможно вы любитель польской нотации, тогда уровень это исключительно ваш уровень.
0
|
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
|
|
30.04.2020, 15:01 | 9 |
Обратная польская нотация (ОПН) - это всего лишь другая форма записи арифметического выражения, в котором отсутствуют скобки, а цифры и знаки идут в порядке выполнения. Благодаря чему его можно легко вычислить:
0
|
Just Do It!
|
|
30.04.2020, 15:28 | 10 |
alexu_007, в фотошопе сделали?
..., ах да, я забыл: надо на сырцы лицензию купить. отсортировать массив операций по приоритетам по мне проще, чем лопатить стек. но это моё имхо, потому что это я уже делал и это работает. собсно, вы правы, что если кодеру уж сильно хотца, то он может и перелопатить строку на стеке, а почему бы и нет. Но, на форуме здесь есть люди разрабатывающие ЯП, где в этом япе ПН будет стандартом, (а вдруг вы тож из этого тайного общества?!) поэтому я не исключил примерно такое желание и у вас: чтобы пользователи изначально писали формулы в ПН.
0
|
661 / 662 / 106
Регистрация: 29.05.2015
Сообщений: 3,967
|
|
30.04.2020, 15:58 | 11 |
0
|
3 / 3 / 0
Регистрация: 18.11.2017
Сообщений: 26
|
||||||
02.05.2020, 21:19 [ТС] | 12 | |||||
Можно вопрос: Что происходит в этой строке?
0
|
Just Do It!
|
||||||
03.05.2020, 00:16 | 13 | |||||
Сообщение было отмечено DeveloperS73 как решение
Решение
1. xy это подстрока которую ищем в строке s
2. pos позиция с которой будет начат поиск. 3. p позиция найденной подстроки xy 4. если подстрока xy не будет найдена, то p == std::string::npos Добавлено через 30 минут DeveloperS73, вот подправил ваш калькулятор Как работает калькулятор в с++? теперь он сможет работать с формулами-функциями в которых нужно подставлять аргументы. Т.к. я не нашёл способа программно загрузить строку в потоковый буфер, то я заменил энтот буфер на дек.
разумеется вам нужно это засунуть в ту часть где вы генерируйте калькуляторную строку(см. пост #3 выше).
1
|
3 / 3 / 0
Регистрация: 18.11.2017
Сообщений: 26
|
|
03.05.2020, 00:25 [ТС] | 14 |
Спасибо большое!
1
|
20 / 21 / 2
Регистрация: 09.04.2020
Сообщений: 125
|
|
03.05.2020, 01:59 | 15 |
Это всего лишь один из способов упаковки математического выражения заданного инфиксной нотацией, как и двоичное дерево. Разница только в том где лежат данные. К слову, forth программисты вообще всё пишут сразу в постфиксе. В чем проблема?
0
|
Just Do It!
|
|
03.05.2020, 02:02 | 16 |
я как раз и спрашиваю в чем проблема ваших погромистов, что надо переводит в постфикс?
но вы вроде как ответили на этот вопрос: проблема в том, что они FORTH-погромисты.
0
|
20 / 21 / 2
Регистрация: 09.04.2020
Сообщений: 125
|
|
03.05.2020, 16:37 | 17 |
Ну как бы инфикс привычен глазу, но не удобный для разбора и вычисления. Постфикс/префикс в этом плане более унифицированные нотации. Я искренне не понимаю вашего сарказма и прошу вас пояснить мне/публике почему на ваш взгляд ОПН:
Также отвергая предложение вы, очевидно, должны сослаться на более эффективные на ваш взгляд альтернативы. Я вижу предложенное решение использовать ОПН гораздо более эффективным чем то что предложили вы.
Ахахаха, посмеялись. Может пора перейти к ктоструктиву?
0
|
20 / 21 / 2
Регистрация: 09.04.2020
Сообщений: 125
|
|
03.05.2020, 16:50 | 19 |
Просто уточняю: перевод в постфикс не предполагается. Идет вычисление результата с разбором выражения в один проход с заменой неизвестный "на лету".
Добавлено через 2 минуты Да. Я вижу что вы прошли по исходному выражению 100500 раз чтобы заменить неизвестные их значениями. Потом высмеяли предложение собеседника по-моему безосновательно. Моя просьба к вам обосновать подобный выпад вполне естественна. Так вы обоснуете или нет?
0
|
Just Do It!
|
|
03.05.2020, 17:05 | 20 |
где идёт? доуточните, пжлста ...
уточняю вопрос: где ваш код, где оно идёт??? Добавлено через 2 минуты ну кидаться фразами с википедии мы тут все горазды: ГДЕ КОНКРЕТНО ВАШ ЭФФЕКТИВНЫЙ КОД??? Добавлено через 4 минуты я не заморочен на одних калькуляторах, проходил мимо, вижу нужен калькулятор, открыл у себя иде - cделал его, и пошёл дальше. Если вы не пишете код, ну, кидайте ссылки, на решения, людям которые просят помочь. Почему не помогаете, а учите тех, кто пытается помогать? Логично же учить тех, кто просит, чтобы его научили? Короче, жду ваш рабочий супер эффективный код.
0
|
03.05.2020, 17:05 | |
03.05.2020, 17:05 | |
Помогаю со студенческими работами здесь
20
Вычисление арифметического выражения по формуле Вычислить значение арифметического выражения Проверить правильность арифметического выражения Вычисления значения арифметического выражения на C++ Синтаксический разбор арифметического выражения Циклическое нахождение значения арифметического выражения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |