Антон (LogRus)
|
|
« Ответ #60 : 20-11-2008 08:11 » |
|
больше не буду.
|
|
|
Записан
|
Странно всё это....
|
|
|
pokk
Помогающий
Offline
|
|
« Ответ #61 : 22-11-2008 10:20 » |
|
Пока я разбирался у меня возник вопрос как можно определить чётное число или нет(первое задание ) ?? и как найти второй нулевой элимент (второе задание )??
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #62 : 22-11-2008 10:32 » |
|
pokk, Чем отличается четное число от нечетного?
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
pokk
Помогающий
Offline
|
|
« Ответ #63 : 22-11-2008 10:48 » |
|
pokk, Чем отличается четное число от нечетного?
делится на 2 с остатком и без =) int a,c; float b; for (a=0;a<10; a++){ b=a/2-int(a/2); printf("%f\n",b); }
вот что я надумал где int выделяет целую часть и должно выводится 0.5(не чётное ) или 0 (чётное ) вот тока получилось что выводится всё время 0 а понять не могу почему
|
|
« Последнее редактирование: 22-11-2008 10:52 от pokk »
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #64 : 22-11-2008 10:57 » |
|
pokk, int это вообше то целочисленный тип. Никаких дробных частей нет в принципе. Иши более правильный путь с учетом данного утверждения. Ну совсем запутанный способ if (a & 1) { // Тут если число не четно } else { // Тут если число четно }
|
|
« Последнее редактирование: 22-11-2008 11:00 от Finch »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
pokk
Помогающий
Offline
|
|
« Ответ #65 : 22-11-2008 10:59 » |
|
pokk, int это вообше то целочисленный тип. Никаких дробных частей нет в принципе. Иши более правильный путь с учетом данного утверждения.
то есть если я напишу int(2) он выдаст 2,а если int(1.5) выдаст 1 так ?
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #66 : 22-11-2008 11:01 » |
|
Да так
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
pokk
Помогающий
Offline
|
|
« Ответ #67 : 22-11-2008 11:08 » |
|
Ну совсем запутанный способ if (a & 1) { // Тут если число не четно } else { // Тут если число четно }
(a & 1) это что означает ??
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #68 : 22-11-2008 11:10 » |
|
Ну я думал, что ты поднимеш книжку. И почитаеш булевые функции. В частности & в данном случае это логическое И.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
pokk
Помогающий
Offline
|
|
« Ответ #69 : 22-11-2008 11:18 » |
|
о а почему это работает ?? если (1 и 1 ) это что означает ?
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #70 : 22-11-2008 11:31 » |
|
Фокусы булевой алгебры и знание двоичной системы счисления.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #71 : 22-11-2008 11:44 » |
|
pokk,
(1 && 1) равносильно (true && true) == true (булево И) ,
а (1&1) - результат число 1 (побитовое И)
|
|
|
Записан
|
|
|
|
pokk
Помогающий
Offline
|
|
« Ответ #72 : 22-11-2008 11:50 » |
|
pokk,
(1 && 1) равносильно (true && true) == true (булево И) ,
а (1&1) - результат число 1 (побитовое И)
оо что-то сильно сложно надо будет вернутся к моему способу =))))) а как на счёт поиска втогоро нулевого элимента ?? break это выход совсем из программы(завершение ) или тока из цикла ??
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #73 : 22-11-2008 11:55 » |
|
да ничего сложного )
поиск второго элемента - начинай с элемента, следующего за первым нулевым , так ? )
break - это выход из цикла do...while , while...do или for (а , наверное кстати, continue - это начать новую итерацию цикла)
|
|
|
Записан
|
|
|
|
pokk
Помогающий
Offline
|
|
« Ответ #74 : 22-11-2008 12:00 » |
|
поиск второго элемента - начинай с элемента, следующего за первым нулевым , так ? )
вот 2 задание
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #75 : 22-11-2008 12:03 » |
|
а. Ну тогда тот же самый поиск первого нулевого, только с конца массива )
|
|
|
Записан
|
|
|
|
pokk
Помогающий
Offline
|
|
« Ответ #76 : 22-11-2008 12:08 » |
|
а. Ну тогда тот же самый поиск первого нулевого, только с конца массива )
оо точно
|
|
|
Записан
|
|
|
|
Serg79
|
|
« Ответ #77 : 24-11-2008 14:04 » |
|
Пока я разбирался у меня возник вопрос как можно определить чётное число или нет(первое задание ) ?? и как найти второй нулевой элимент (второе задание )??
Классический способ: int digit; ... if (digit % 2) { /* не четное */ } else { /* четное */ }
|
|
|
Записан
|
|
|
|
Вад
|
|
« Ответ #78 : 24-11-2008 14:06 » |
|
Serg79, но неоптимальный Можно что-то вроде (digit & 1) практиковать P.S. Хотя, возможно, компилятор "% 2" на побитовое "и" сам заменит - такое, кажется, видел где-то.
|
|
« Последнее редактирование: 24-11-2008 14:11 от Вад »
|
Записан
|
|
|
|
Serg79
|
|
« Ответ #79 : 24-11-2008 14:22 » |
|
Serg79, но неоптимальный Можно что-то вроде (digit & 1) практиковать P.S. Хотя, возможно, компилятор "% 2" на побитовое "и" сам заменит - такое, кажется, видел где-то. Зависит от платформы и компилятора Но что читается лучше, это факт.
|
|
|
Записан
|
|
|
|
Serg79
|
|
« Ответ #80 : 24-11-2008 14:29 » |
|
Для GCC платформа i386: int test_func_1(int digit) { if (digit % 2) return 0;
return 1; }
int test_func_2(int digit) { if (digit & 1) return 0;
return 1; }
gcc -O2 -fomit-frame-pointer -S main.c дает результат: .globl test_func_1 .type test_func_1, @function test_func_1: movzbl 4(%esp), %eax andl $1, %eax xorl $1, %eax movzbl %al, %eax ret .size test_func_1, .-test_func_1 .p2align 4,,15 .globl test_func_2 .type test_func_2, @function test_func_2: movzbl 4(%esp), %eax andl $1, %eax xorl $1, %eax movzbl %al, %eax ret .size test_func_2, .-test_func_2 .p2align 4,,15
|
|
|
Записан
|
|
|
|
|