Форум программистов, компьютерный форум, киберфорум
D (DLang)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.68/104: Рейтинг темы: голосов - 104, средняя оценка - 4.68
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446

Возможно ли написать калькулятор на D почти в одну строчку?

13.03.2015, 00:31. Показов 24892. Ответов 102
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я экспериментировал с типом данных TypeTuple и решил попробовать написать с помощью него простой калькулятор, который смог бы парсить скобки и вычислять значение выражений.
C++
1
2
3
4
5
6
7
8
9
import std.stdio;
import std.typetuple;
 
void main() {
 
    auto a = TypeTuple!(2 * (2 + 1));
 
    writeln(a); // prints 6
}
Но я столкнулся с проблемой ввода данных для TypeTuple:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
import std.stdio;
import std.typetuple;
 
void main() {
 
    string s;
 
    readf(" %s\n", &s);
 
    auto a = TypeTuple!(s);
 
    writeln(a); // prints 2 * (2 + 1)
}
Возможно ли как-то "срезать" кавычки со строки s?
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2015, 00:31
Ответы с готовыми решениями:

Калькулятор в одну строчку
Нашел на Форуме. Немного переделал, добавил и изменил. В функциях Cos,Sin,Tan вместо Radian, градусы. С уважением,...

Одну строчку немогу написать
Объявлены структура, описывающая точку в пространстве TPoint и массив точек Points: struct TPoint { int X; int Y; ...

написать одну строчку кода:
Сам пример на рисунке: я не понимаю как написать верхнюю и нижнюю строку там где X^2 надо куда то втулить j+1 я не знаю как записать сам...

102
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
08.04.2015, 15:09  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Lambdik Посмотреть сообщение
если ввести вот это
Ну так и что мне Цукорский пытался сказать своей ссылкой? Ведь на D можно реализовать это арифметическое дерево, только будет, конечно, намного больше кода, потому что D - неинфиксный язык программирования.
Цитата Сообщение от castorsky Посмотреть сообщение
Вот инфиксная запись: / + * 2 3 1 4 => (1 + 2 * 3) / 4 .
Ну, да. Что-то я подзабыл.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
10.04.2015, 13:44
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Ну так и что мне Цукорский пытался сказать своей ссылкой?
Да ничего особенного. Просто поделился для ознакомления.
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Ведь на D можно реализовать это арифметическое дерево, только будет, конечно, намного больше кода, потому что D - неинфиксный язык программирования.
"И не в этом суть" (с). По ссылке само дерево составляется где-то в вакууме и на вход автомату подается в уже готовом виде. Задача состоит просто в его вычислении (обход слева-направо).
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
10.04.2015, 14:00  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Да ничего особенного. Просто поделился для ознакомления.
Ну тогда ладно.
Цитата Сообщение от castorsky Посмотреть сообщение
Задача состоит просто в его вычислении (обход слева-направо).
Понятно.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,769
Записей в блоге: 14
10.04.2015, 15:19
Единственный способ "написать" полноценный калькулятор "в одну строчку" - это вызвать готовую функцию (написанную кем-то). Печально, что многие подменяют программирование поиском библиотек... Про изобретение велосипедов - не надо.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
10.04.2015, 15:39  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Печально, что многие подменяют программирование поиском библиотек...
Программист занимается решением комплексных задач. Эти комплексные задачи можно разложить на маленькие подзадачи, которые чаще всего оказываются типичными и уже кем-то когда-то решенными. Поэтому программирование нередко сводится к подбору и собирательству готовых решений в необходимый продукт.

Готовые решения – это, например, статические библиотеки, то есть модули. Чтобы использовать код этих модулей, их достаточно подключить, и тогда пространство имен этих модулей полностью или частично добавляется к пространству имен кода программы. Но чтобы грамотно использовать эти модули, нужно знать все особенности.
Из статьи одного D-шника:
Reading the documentation (in Russian)
P.S. Современное программирование именно к этому и сводится, ибо всё уже кем-то реализовано.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
10.04.2015, 16:11
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Современное программирование именно к этому и сводится, ибо всё уже кем-то реализовано
Мнение студента без опыта работы конечно представляет огромную ценность. Невнимательность и абсолютное доверие к источнику как раз и свидетельствует об отсутствии опыта работы.
Я выделю некоторые фиксы для внесения ясности. Подчеркнутое - это от себя, жирным - это автора:
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Поэтому программирование прикладных программ, ориентированных на десктоп или сервер нередко сводится к подбору и собирательству готовых решений
1
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
10.04.2015, 16:17  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Невнимательность и абсолютное доверие к источнику
Источник - профессионал. Я с ним лично общался, а вот про вас могу лишь дать не очень хорошие отзывы.
Цитата Сообщение от castorsky Посмотреть сообщение
прикладных программ, ориентированных на десктоп или сервер
А что вам ещё надо? ИИ для адронного калаэдра?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
10.04.2015, 16:30

Не по теме:

Ваша оценка имеет такую же ценность как и мнение


Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А что вам ещё надо?
Мне надо чтобы клиент получил то за чем пришел. Клиенту надо чтобы его оборудование работало корректно (он и задачу-то поставить не в состоянии). Пример из практики: автоматизация печати полиграфии. Ни о каких там x86 и речи нет, оборудование закупное. Какие готовые решения? Хорошо если сишный компилятор есть.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
10.04.2015, 16:35  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Ни о каких там x86 и речи нет, оборудование закупное. Какие готовые решения?
Тайно, в виде трояна, засодить в забугорное оборудование Лисп. Коротко, но ясно.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,769
Записей в блоге: 14
10.04.2015, 16:43
Dennis Ritchie, ведь ясно же, что первично то, что уже кем-то сделано. Собирательство из готовых блоков имеет свою область применения. Но без готовых блоков - это бесполезное занятие.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
10.04.2015, 16:52  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
ведь ясно же, что первично то, что уже кем-то сделано... Но без готовых блоков - это бесполезное занятие.
Спасибо. Это самое ценное, что я когда-либо слыхивал за свою жизнь.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,769
Записей в блоге: 14
10.04.2015, 17:44
Dennis Ritchie, вот и запомни на остаток дней своих. Невредно.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
10.04.2015, 17:54
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Тайно, в виде трояна, засодить в забугорное оборудование Лисп
И при чем тут лисп? Лисп может выступить в качестве промежуточного звена, как средство проектирования dsl. При этом таким средством может выступать любой удобный язык.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
16.04.2015, 03:20  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Единственный способ "написать" полноценный калькулятор "в одну строчку" - это вызвать готовую функцию (написанную кем-то). Печально, что многие подменяют программирование поиском библиотек...
Нет, не единственный. Вы забыли про интеграцию D с Python (пока что поддерживается только с версией 2.7):
C++
1
2
3
4
5
6
7
8
9
10
import std.stdio;
import pyd.pyd, pyd.embedded;
 
shared static this() {
    py_init();
}
 
void main() {
    writeln(py_eval!string("2 ** 5 % 17")); // prints 15
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
import std.stdio;
import std.string;
import std.process;
import pyd.pyd, pyd.embedded;
 
shared static this() {
    py_init();
}
 
void main() {
    writeln(py_eval!string(readln.strip)); // stdin-stdout
    system("pause");
}
Welcome to PyD’s documentation!
Pyd is a library for the D programming language that wraps the raw Python/C API with a cleaner, simpler interface

Экзешник:
Вложения
Тип файла: zip mypyd.zip (654.0 Кб, 4 просмотров)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,769
Записей в блоге: 14
16.04.2015, 09:54
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Нет, не единственный. Вы забыли про интеграцию D с Python (пока что поддерживается только с версией 2.7):
- и что? Ты вызываешь функцию, написанную кем-то в Питоне...
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
16.04.2015, 16:59  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- и что? Ты вызываешь функцию, написанную кем-то в Питоне...
И что? Может быть, теперь вообще перестать программировать на языках, написанных кем-то?
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
16.04.2015, 17:07
Батарейками, конечно, можно пользоваться сколько угодно, но хвалиться-то надо тем, что сделал поверх них. Я вот двумя символами написал интерактивный калькулятор. И какая мне от этого слава?
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,769
Записей в блоге: 14
16.04.2015, 17:14
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
И что? Может быть, теперь вообще перестать программировать на языках, написанных кем-то?
- это ты сам решай. Разговор был о другом. Если более общо, то есть простые алгоритмы, реализуемые в несколько строк. А есть - непростые, которые в несколько строк не не втиснешь. Калькулятор именно таков.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
16.04.2015, 17:18  [ТС]
Цитата Сообщение от helter Посмотреть сообщение
Батарейками, конечно, можно пользоваться сколько угодно, но хвалиться-то надо тем, что сделал поверх них.
Ага. Чтобы написать, например, ОС, нужно использовать наработки предыдущих лет и немного своего "энтузиазма" - так и идёт прогресс. Нужно уметь объединять батарейки в один большой проект. Батарейки связывать тоже не так просто.
1
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
16.04.2015, 17:27
Все три предложения плюсую.

Хотя в данном случае связывание батареек гораздо-гораздо проще, чем написание парсера. Трудящиеся чувствуют обман и негодуют. (Хотя лично мне обидно, что моему достижению не рукоплещут. А ведь я могу bc и в скрипт на баше вставить!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.04.2015, 17:27

Возможно ли на vbs написать калькулятор?
Всем привет! Я не силен в этой сфере,но хотелось бы участвовать или наблюдать процесс написания,дабы получить в будующем возможность...

Js в одну строчку
Подскажите готовые сервисы через которые можно пропустить js и получить на выходе js код в одну строчку.

перевести одну строчку на с++
case (operation_list.ItemIndex) of 0: ..............

Перевести одну строчку с С++ в С
помогите перевести cout << (i == 0 || j == 0 || i == N + 1 || j == M + 1 ? (char)178 : a) << (j <= M ? "" : "\n"); С++ не проходила,...

Текст в одну строчку
Можно ли весь код сайта начиная от <!DOCTYPE html><html> и кончая </body></html> вывести в одну строчку. Как например это сделано у Яндекс?...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru