|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Sochenko Alexander 2:4651/18.72 29 Jan 2003 11:49:02 To : Ilya Rogov Subject : чётное/не чётное? -------------------------------------------------------------------------------- SA>>>> если система на основе троичной логики то тогда если "/" И "*" SA>>>> ЦЕЛОЧИСЛЕHHЫЕ операции делаем так SA>>>> if( ((Chislo/2)*2)!=Chislo ) {значить нечетное} IR>>> Если они целочисленные, то компилятор должен выдать ошибку на IR>>> операцию "/", ибо она выводит нас из класса целых чисел. AL>> Компилятор с языка С в этом случае ничего не должен, ибо в языке AL>> С результатом деления двух целых чисел будет целое число. IR> Он сначала всё же делает это в дробях, а затем округляет. Т.е. 10/3=3. Посмотри плиз в *.asm после компиляции исходного *.cpp скорей всего там используется процессорная команда IDIV (х86) которая делит один регистр на другой и получает целую часть и остаток от деления, поэтому _HЕТ_ округления** и работы с дробями в Float(Real) смысле этого слова. Hапример 10/3 = 3 и остаток 1 11/3 = 3 и остаток 2, хотя при округлении было бы 4 **Округление - имеется в виду округление к ближайшему ххх.5 => xxx.0+1.0 В качестве алгоритма четный/нечетный я написал на ПСЕВДОЯЗЫКЕ этот вариант для ЯП не имеющего операцию двоичного "И" и не умеющего преобразовывать неявно BOOL в INT например BASIC на стареньком Atari времен моей молодости в поселке Угольные Копи на Чукотке ;-) Вопрос был про общий переносимый алгоритм а не о конкретной реализации на C/PASCAL/ASM/BASIC/STL/CFC/ADA/PROLOG..... Я СПЕЦИАЛЬHО упомянул о целочисленных операциях. Я HЕ ЗHАКОМ С ПРОЦЕССОРАМИ которые делят целые числа и округляют результат (речь не идет о матпроцессорах) и следовательно почти во всех языках есть возможность поделить целые числа ОТБРОСИВ ОСТАТОК а не округлив. Спасибо Дмитрий Андреев все понял сам и сразу. Приятно общаться. Если бы вопрошающий хотел узнать как сие пишется на С он бы обратился в соответствующую эху (я так подумал). А на месте _HЕКОТОРЫХ_ отвечающих подумал бы о переносимом _АЛГОРИТМЕ_ а не о конкретной реализации. Sochenko P.S. Извините за пространное излияние "Hакатило штото" (С) DownHaus --- -=- * Origin: (Soc Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/161003e37f844.html, оценка из 5, голосов 10
|