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

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

13.03.2015, 00:31. Показов 24258. Ответов 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,765
Записей в блоге: 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,765
Записей в блоге: 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,765
Записей в блоге: 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,765
Записей в блоге: 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,765
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru