Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [3]  Все   Вниз
  Печать  
Автор Тема: помогите разобраться с поиском в масиве (C/C++)  (Прочитано 57117 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #60 : 20-11-2008 08:11 » 

больше не буду.
Записан

Странно всё это....
pokk
Помогающий

ru
Offline Offline

« Ответ #61 : 22-11-2008 10:20 » 

Пока я разбирался у меня возник вопрос как можно определить чётное число или нет(первое задание ) ??  и  как найти второй нулевой элимент (второе задание )??   
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #62 : 22-11-2008 10:32 » 

pokk, Чем отличается четное число от нечетного?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
pokk
Помогающий

ru
Offline 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
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #64 : 22-11-2008 10:57 » 

pokk, int это вообше то целочисленный тип. Никаких дробных частей нет в принципе. Иши более правильный путь с учетом данного утверждения.

Ну совсем запутанный способ
Код:
if (a & 1) 
{
   // Тут если число не четно
}
else
{
   // Тут если число четно
}
« Последнее редактирование: 22-11-2008 11:00 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
pokk
Помогающий

ru
Offline Offline

« Ответ #65 : 22-11-2008 10:59 » 

pokk, int это вообше то целочисленный тип. Никаких дробных частей нет в принципе. Иши более правильный путь с учетом данного утверждения.
то есть  если я напишу  int(2)  он выдаст  2,а если  int(1.5)  выдаст 1     так Не понял?     
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #66 : 22-11-2008 11:01 » 

Да так
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
pokk
Помогающий

ru
Offline Offline

« Ответ #67 : 22-11-2008 11:08 » 



Ну совсем запутанный способ
Код:
if (a & 1) 
{
   // Тут если число не четно
}
else
{
   // Тут если число четно
}

(a & 1)  это что означает ??
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #68 : 22-11-2008 11:10 » 

Ну я думал, что ты поднимеш книжку. И почитаеш булевые функции. В частности & в данном случае это логическое И.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
pokk
Помогающий

ru
Offline Offline

« Ответ #69 : 22-11-2008 11:18 » 

о а почему это работает ?? Улыбаюсь Улыбаюсь

если  (1 и 1 )  это что означает ?
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #70 : 22-11-2008 11:31 » 

Фокусы булевой алгебры и знание двоичной системы счисления.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #71 : 22-11-2008 11:44 » 

pokk,

(1 && 1) равносильно (true && true) == true (булево И) ,

а (1&1) - результат число 1  (побитовое И)
Записан

pokk
Помогающий

ru
Offline Offline

« Ответ #72 : 22-11-2008 11:50 » 

pokk,

(1 && 1) равносильно (true && true) == true (булево И) ,

а (1&1) - результат число 1  (побитовое И)

оо что-то сильно сложно надо будет вернутся к моему способу =)))))  

а как на счёт поиска втогоро нулевого элимента ??  
 break   это выход совсем из программы(завершение )  или тока из цикла ??
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #73 : 22-11-2008 11:55 » 

да ничего сложного )

поиск второго элемента - начинай с элемента, следующего за первым нулевым , так ? )

break - это выход из цикла do...while , while...do или for
(а , наверное кстати, continue - это начать новую итерацию цикла)
Записан

pokk
Помогающий

ru
Offline Offline

« Ответ #74 : 22-11-2008 12:00 » 



поиск второго элемента - начинай с элемента, следующего за первым нулевым , так ? )





вот 2 задание   Улыбаюсь Улыбаюсь
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #75 : 22-11-2008 12:03 » 

а. Ну тогда тот же самый поиск первого нулевого, только с конца массива )
Записан

pokk
Помогающий

ru
Offline Offline

« Ответ #76 : 22-11-2008 12:08 » 

а. Ну тогда тот же самый поиск первого нулевого, только с конца массива )
  оо  точно
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #77 : 24-11-2008 14:04 » 

Пока я разбирался у меня возник вопрос как можно определить чётное число или нет(первое задание ) ??  и  как найти второй нулевой элимент (второе задание )??   
Классический способ:
Код:
int digit;
...
if (digit % 2) {
    /* не четное */
} else {
    /* четное */
}
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #78 : 24-11-2008 14:06 » 

Serg79, но неоптимальный Ага Можно что-то вроде (digit & 1) практиковать Улыбаюсь

P.S. Хотя, возможно, компилятор "% 2" на побитовое "и" сам заменит - такое, кажется, видел где-то.
« Последнее редактирование: 24-11-2008 14:11 от Вад » Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #79 : 24-11-2008 14:22 » 

Serg79, но неоптимальный Ага Можно что-то вроде (digit & 1) практиковать Улыбаюсь

P.S. Хотя, возможно, компилятор "% 2" на побитовое "и" сам заменит - такое, кажется, видел где-то.
Зависит от платформы и компилятора Улыбаюсь

Но что читается лучше, это факт.
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #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
Записан
Страниц: 1 2 [3]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines