![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Дали задание, последовательность чисел. Нужно узнать количество парных.
Как бы все просто это цикл, а как узнать парное число или нет? |
#2
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
![]() Мм, уже сам догадался.
программно это будет так: Код:
if (a mod 2 =0) |
#4
|
||||
|
||||
![]() через mod можно узнать четное число или нет, а не парные числа.
Пишу программы за еду. __________________ |
#5
|
|||
|
|||
![]() Продолжаем по теме:
Код:
program zadanie9; type charset=set of byte; var set1:set of 1..30; j,i,res:integer; begin j:=0; set1:=[15,4,5,7,9,6,4,8,5,2,3,19,13,13,17,19,15,11,3,22,27,26,24,27,25,29,14,9,13,21]; for i:=1 to 30 do begin if i in set1 then j:=i; begin if (j mod 2=0) then res:=res+1; end; end; writeln('Четных чисел: ', res); end. |
#6
|
|||
|
|||
![]() Цитата:
Что занчит "нельзя использовать массив"? А откуда ты будешь брать числа? С консоли? Да, и еще, а кто будет res инициализировать? ЗЫ. Вроде ты хотел парные числа, или все-таки четные нужны? |
#7
|
||||
|
||||
![]() "парные" и "четные" - одно и то же.
Самый быстрый способ определения четности: Код:
if N or 1 = N then writeln('Число N нечетное') else writeln('число N четное'); |
#8
|
||||
|
||||
![]() Цитата:
Цитата:
Пишу программы за еду. __________________ |
#9
|
|||
|
|||
![]() Цитата:
Угу. Хотя поправить легко ![]() Код:
if N or 1 = 1 then writeln('Число N нечетное') else writeln('число N четное'); Видимо, описка. |
#10
|
||||
|
||||
![]() N and 1 = 1 вроде так должно быть?
01010111 and 00000001 = 00000001 — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#11
|
||||
|
||||
![]() Цитата:
А он рабочий. Пусть N=1010110 - четное число, тогда N: 1010110 or 1: 0000001 = 1010111 1010111<>1010110, так что N изменилось, значит у него изначально не стоял самый младший бит нечетности, значит число четное. Ну, и наоборот, если оно изначально нечетное. |
#12
|
||||
|
||||
![]() Цитата:
тоже вариант, но работает слегка медленней, так как сбрасываются все биты, кроме одного. но ничего, это заметно разве что на аппаратном уровне. ![]() |
#13
|
||||
|
||||
![]() Цитата:
А вот с другой стороны скорость примера D_E_N_ гораздо ниже. Потому что все логические операции меняют флаги, в т.ч. флаг нуля. Если делать and 1 Код:
mov eax, [N] and eax, 1 jz ... ; или даже test [N], 1 jz ... Код:
mov eax, [N] mov ebx, eax or eax, 1 cmp eax, ebx jz .... Вопрос только в том, почему мы уже 7 постов подряд обсуждаем четные/нечетные, в то время как парные - совсем другое. Для неверующих - 2 пост в помощь. Чтобы проверить парность чисел, одно число должно быть на 2 меньше другого, то есть надо их вычесть и результат сравнить с 2. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 13.01.2013 в 16:03. |
#14
|
||||
|
||||
![]() Цитата:
Пишу программы за еду. __________________ |
#15
|
|||
|
|||
![]() На самом деле число которое делиться на 2 без остатка.
А то парное, четное, люди, я в этом не сильно, с массивом легко воплотить, уже даже знаю как. |