![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 |
|
#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. Последний раз редактировалось Bargest, 13.01.2013 в 16:03. |
|
#14
|
||||
|
||||
|
Цитата:
|
|
#15
|
|||
|
|||
|
На самом деле число которое делиться на 2 без остатка.
А то парное, четное, люди, я в этом не сильно, с массивом легко воплотить, уже даже знаю как. |