| 
			| 
					
						| Антон (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 : gcc -O2 -fomit-frame-pointer -S main.cint 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;
 }
 
 дает результат: .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
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  |