Ну, это вопрос определения. Пусть будет структура посложнее, но заранее. Вот ведь комплексные числа уже реализованы в нужном виде и мне не приходится изобретать велосипед.
То, что он реализован и даже библиотека приложена к тому или иному пакету, не делает его примитивным типом.
потому что толку не будет, кто работает с дробями? вычисления проводят с десятичными числами с запятой, что не целые, тем самым прибирая к рукам и не-дроби, то бишь иррациональные числа; как оцените приближение дробью, то бишь парой больших целых чисел?
Проблема в том, что в компьютере a/b < c/d и ad < bc, где a, b, c, d целые, не одно и то же. И вовсе не потому, что в 1-м случае деление по умолчанию целое (типа 1/2 = 0).
Не понял, какие потуги? Я и сказал-то всего одну фразу. Если кто и тужится, так это ВЫ, дорогой Владимирови. В этой ветке тужитесь изобразить себя суперпрограммистом времен ЕС ЭВМ. А в ветке для математиков-чайников тужитесь еще сильнее, великий математик просто.
рациональные числа/дроби присутствуют в некоторых теоретических результатах теории чисел и алгебраической геометрии, о конкретных дробях не знаю, но наверно таких задач весьма мало и упорядоченных пар целых должно хватить.
Если кто и тужится, так это ВЫ, дорогой Владимирови. В этой ветке тужитесь изобразить себя суперпрограммистом времен ЕС ЭВМ. А в ветке для математиков-чайников тужитесь еще сильнее, великий математик просто.
Вот я и не виноват, что Вы все мои слова априори отвергаете, даже не стараясь их понять. Хотя сам факт, что Вы видите проблему в компьютере, уже показателен.
И ходите по детским граблям.
Компьютер это лишь инструмент. Если Луну не видно в микроскопе, то это не проблема микроскопа. И не проблема телескопа, что в него не видно бактерий.
Если для задачи нужна именно точность (и скорость), то конечно, использование деления надо по возможности исключить.
Создать класс рациональных чисел дел на десять минут и там a/b < c/d и ad < bc будет строго одно и то же.
Почему нет стандартного класса... Наверно потому, что само по себе это малополезно. Надо знать всю задачу и дополнить его нужными расширениями
А иначе будет так - нате вам микроскоп, он очень хорошо увеличивает и смотрите куда хотите
Можно использовать для компьютерной векторной графики - там можно каждую точку представить в виде целого вектора и целого же коэффициента масшабирования
Но тогда имеет смысл дополнить и операциями над другими примитивами и т.д.
На самом деле рациональные числа встречаются очень часто, когда имеешь дело с целочисленными объектами и стараешься все операции производить точно. Например, решение линейной системы уравнений с целыми коэффициентами будет рациональным. Или вот в целочисленном случае используют не евклидову, а любую другую метрику, лишь бы целочисленную: манхеттенскую, Чебышева, Хемминга и т.д., которую можно рационально нормировать.
Vladimirovich wrote:
Вот комплексные числа полезны уже сами по себе.
Вроде бы да. Но на этом форуме не припомню ни одного случая. Мне вот в ЖИЗНИ комплексные числа потребовались всего один (!) раз.
Хотя сам факт, что Вы видите проблему в компьютере, уже показателен.
И ходите по детским граблям.
Компьютер это лишь инструмент. Если Луну не видно в микроскопе, то это не проблема микроскопа. И не проблема телескопа, что в него не видно бактерий.
Если вы используете компьютер именно как вычислитель - ваш "инструмент" - только потому, что получаете за это зарплату, то вот это и есть баловство с детскими граблями.
Я потом, может, скажу, в какой ЖИЗНИ мне комплексные числа встретились. Ну а форум - это разве не жизнь? Времени здесь проводим много, денег не получаем (я).
Я потом, может, скажу, в какой ЖИЗНИ мне комплексные числа встретились. Ну а форум - это разве не жизнь? Времени здесь проводим много, денег не получаем (я).
А здесь никто не получает
Что же касается комплексных чисел, то тут много было упоминаний, и в этой теме притом, правда в основном в связи с научной деятельностью.
Если для задачи нужна именно точность (и скорость), то конечно, использование деления надо по возможности исключить.
Создать класс рациональных чисел дел на десять минут и там a/b < c/d и ad < bc будет строго одно и то же.
За 10 минут не сумеете написать даже алгоритм проверки, является ли дробь несократимой. А в общем и целом (рациональном)) класс получается довольно большим. Вот в этом практикуме, например, его создание занимает целую главу - правда, начальную. kek.ksu.ru/EOS/BooksProg/OOP_csharp_2.pdf
За 10 минут не сумеете написать даже алгоритм проверки, является ли дробь несократимой.
А кто это Вам обещал? Мы говорили про базовый класс - +, -, *, \, ==, как это делается со стандартными числами.
Что касается Вашей новой задачи, то она требует значительно меньше 10 минут, ибо надо всего лишь найти наибольший общий делитель.
Это успешно решено еще например Евклидом и алгоритм занимает меньше 10 строк.
За 10 минут не сумеете написать даже алгоритм проверки, является ли дробь несократимой.
А кто это Вам обещал? Мы говорили про базовый класс - +, -, *, \, ==, как это делается со стандартными числами.
Что касается Вашей новой задачи, то она требует значительно меньше 10 минут, ибо надо всего лишь найти наибольший общий делитель.
Это успешно решено еще например Евклидом и алгоритм занимает меньше 10 строк.
Вас послушать, я никогда не слышал про алгоритм Евклида. И не реализуете вы его за 10 минут. Понаделаете кучу ошибок... Вот скопируете и вставите - это да, за 10 минут сможете.
И проверку эту вставлять в базовый класс придется все равно, скажем, при сложении. Операции перегружать... Не на 10 минут в общем.
Вас послушать, я никогда не слышал про алгоритм Евклида. И не реализуете вы его 10 минут. Понаделаете кучу ошибок...
Вы видно, очень раздражены и Вашей основной целью является не что-то обсудить, а непременно мне возразить.
А я не буду. Побеседуйте теперь с кем нибудь еще.
Интересно, почему не слышно про такой тип данных в языках программирования, как "рациональное"? Или я просто не слышал? Помнится, калькуляторы умели оперировать с дробями.
Языки программирования и математические пакеты
16 Июль 2018 17:05 #148
инфолиократ
Vladimirovich wrote:
самоед-4 wrote:
Вас послушать, я никогда не слышал про алгоритм Евклида. И не реализуете вы его 10 минут. Понаделаете кучу ошибок...
Вы видно, очень раздражены и Вашей основной целью является не что-то обсудить, а непременно мне возразить.
А я не буду. Побеседуйте теперь с кем нибудь еще.
Обмен мнениями (как в прошлом тысячелетии сказал 9-тиклассник)- это навязывание своего мнения?
З павагай да неабыякавых
Языки программирования и математические пакеты
16 Июль 2018 17:08 #149
инфолиократ
Ruslan73 wrote:
самоед-4 wrote:
Интересно, почему не слышно про такой тип данных в языках программирования, как "рациональное"? Или я просто не слышал? Помнится, калькуляторы умели оперировать с дробями.
Вот было-бы классно! Рациональное ввести, а иррациональное исключить, получилось бы вселенсконатуральное самодостаточным стало бы. (А что, и помечтать нельзя?)
З павагай к читателям и почитателям КФ.