Форум программистов, компьютерный форум CyberForum.ru

Как работает функция "test" в приведенном коде - C++

Восстановить пароль Регистрация
 
 
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
14.01.2014, 16:14     Как работает функция "test" в приведенном коде #1
Объясните как работает функция test

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <conio.h>
#include <iostream.h>
#include <limits.h>
 
int     test(long int a)
     {return ((a>>15)+1)&~1;}
 
int     primC(int a, const int b, const int c, const int d)
{ double z = (2.0*a+1.0*b*c)/(d-a);  //!!!!!!!!!! ВНИМАНИЕ !!!!!!!!!!!!!!!!!
  if (z > SHRT_MIN && z < SHRT_MAX) return z;
   else
    { cout << "\n!!!!!!!!!!! Limits of int value !!!!!!!!!!!\n  x = "
           << z << endl;
      return SHRT_MIN; //-32768
     }
 }
 
int X,a;
 
void main(void)
{   char ch;
    const b=-333;
    const c= 1000;
    const d=-10;
    long int a1;
    do {X = 0;
        cout << "\n    x=(2*a+b*c)/(d-a);  int x,a,b=-333,c=1000,d=-10;" << endl;
        do{ cout<<"\n    Enter a [-32768..32767], a!= " << d << " ====> ";
            cin>> a1;
           }while (test(a1) || d - a1 == 0 || test (d-a1));
        a = a1;
        X = primC(a, b, c, d);
        if (X!=SHRT_MIN)
         { cout << " Result (C++) x = " << X << endl;
          }
        cout << "\n\nExit? - (y/n)\n";
        ch = getch();
       } while (!(ch=='y' || ch =='Y'));
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
14.01.2014, 16:15     Как работает функция "test" в приведенном коде #2
Элементарно:
здесь её нет
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
14.01.2014, 16:42  [ТС]     Как работает функция "test" в приведенном коде #3
Элементарно:
здесь её нет
поясни
а это что
C++
1
}while (test(a1) || d - a1 == 0 || test (d-a1));
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
14.01.2014, 17:02     Как работает функция "test" в приведенном коде #4
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
а это что
А это называется "я тоже сообщения править умею".
Раз вы вместо того, чтоб свою ошибку признать и молча исправить, решили меня еще и в неправомерной клевете обвинить, то и решайте свое задание сами.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,537
Записей в блоге: 27
14.01.2014, 17:03     Как работает функция "test" в приведенном коде #5
Производит битовые операции с числом, которое получает. И возвращает результат. <censored>

 Комментарий модератора 
Использование нецензурных выражений запрещено в любом виде
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
14.01.2014, 17:04     Как работает функция "test" в приведенном коде #6
P.S. я специально даже перед публикацией второго поста нажал Ctrl + F и ввел test. Результат - 1 соответствие.
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
14.01.2014, 17:26  [ТС]     Как работает функция "test" в приведенном коде #7
P.S. я специально даже перед публикацией второго поста нажал Ctrl + F и ввел test. Результат - 1 соответствие.
выражайтесь яснее, я ничего не пойму
роизводит битовые операции с числом, которое получает. И возвращает результат. Хуле.
Это и так понятно, подробнее
Раз вы вместо того, чтоб свою ошибку признать и молча исправить, решили меня еще и в неправомерной клевете обвинить, то и решайте свое задание сами.
вас никто тут не заставляет решать
Я никого не обвиняю,я просто не понимаю вас
castaway
Эксперт С++
4838 / 2977 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
14.01.2014, 18:10     Как работает функция "test" в приведенном коде #8
Если не ошибаюсь, то она проверяет, лежит ли число в пределах значений, указаных в 28-й строке.
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
14.01.2014, 18:21  [ТС]     Как работает функция "test" в приведенном коде #9
Если не ошибаюсь, то она проверяет, лежит ли число в пределах значений, указаных в 28-й строке.
Ну это по логике задачи
А как именно она проверяет, я понять не могу
wolf1396
5 / 5 / 0
Регистрация: 07.05.2013
Сообщений: 192
14.01.2014, 21:16     Как работает функция "test" в приведенном коде #10
Цитата Сообщение от MrGluck Посмотреть сообщение
Элементарно:
здесь её нет
C++
1
2
int     test(long int a)
     {return ((a>>15)+1)&~1;}
а это (^) тогда что?
MastAKK
 Аватар для MastAKK
143 / 134 / 12
Регистрация: 13.10.2012
Сообщений: 585
Записей в блоге: 1
14.01.2014, 21:32     Как работает функция "test" в приведенном коде #11

Не по теме:

Код ужасен (внешне).


Скажи, у тебя он вообще работает как надо? У меня ф-ция test() всегда 0 возвращает...

Не по теме:

Код ужасен [1]

MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
14.01.2014, 21:35     Как работает функция "test" в приведенном коде #12
wolf1396, ТС изначально скинула файл на форум, где функция test называлась по другому. Когда я сделал замечание - она исправила код (можно в течении 5 минут после публикации) и зачем то (!!!) еще и написала мне что мол я просто так придираюсь. А я, как писал уже выше, даже через поиск Ctrl + F проверил наличие сией функции.
HighPredator
 Аватар для HighPredator
5342 / 1725 / 320
Регистрация: 10.12.2010
Сообщений: 5,108
Записей в блоге: 3
14.01.2014, 21:40     Как работает функция "test" в приведенном коде #13
Вот глядя на все это у меня возникла мысль, что код рассчитан изначально не на long int, а на short int.
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
15.01.2014, 00:07  [ТС]     Как работает функция "test" в приведенном коде #14
просто я когда написала код, смотрю, имя функции не test, а temp и подправила и даже не предала этому значения вообще, потому что temp функция была где то секунд 30

Вы тут начали какие то странные сообщения писать, а я не могу врубиться в чем дело !!!
Поэтому вам и показалось, что я на вас наезжаю
Никаких обид !!

PS
: ссори за флуд, просто Я НЕ МОГУ МОЛЧАТЬ, просто чтоб небыло обид
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
15.01.2014, 01:38     Как работает функция "test" в приведенном коде #15
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
Вы тут начали какие то странные сообщения писать, а я не могу врубиться в чем дело !!!
а это тогда что:
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
поясни
а это что
Код C++
1
}while (test(a1) || d - a1 == 0 || test (d-a1));

Не по теме:

Ладно, видимо мы друг друга недопоняли. Я в вашу фразу вложил другой смысл.


Функция сначала сдвигает байты на 15 разрядов (считайте, что 2 в 15), потом к полученному результату в 10-ном формате добавляет 1 и далее, если число четное - оставляет как есть, иначе отнимает 1, т.е. обнуляет младший разряд

Добавлено через 1 минуту
До http://www.cyberforum.ru/cgi-bin/latex.cgi?{2}^{15} - 1 всегда будет выдавать 0
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,040
15.01.2014, 01:47     Как работает функция "test" в приведенном коде #16
Цитата Сообщение от Zla9_Kolu4ka Посмотреть сообщение
{return ((a>>15)+1)&~1;}
C++
1
2
3
4
5
6
a=a/32768;
a++;
a=a&0xFFFFFFFE;// обнуляет младший разряд приводит к меньшему четному
//вместо этого можно было написать
//if(a%2!=0)
// a--;
так понятней?

Добавлено через 1 минуту
Цитата Сообщение от MrGluck Посмотреть сообщение
До всегда будет выдавать 0
только для положительных
для всех отрицательных не будет 0

Добавлено через 1 минуту
есть подозрение что это проверка на отрицательность числа
только написано было давно когда инт был 16 битным
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
15.01.2014, 01:50     Как работает функция "test" в приведенном коде #17
Цитата Сообщение от ValeryS Посмотреть сообщение
для всех отрицательных не будет 0
для отрицательных манипуляции далее (инкремент и &~1) в 0 изменят.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,040
15.01.2014, 01:59     Как работает функция "test" в приведенном коде #18
Цитата Сообщение от MrGluck Посмотреть сообщение
для отрицательных манипуляции далее (инкремент и &~1) в 0 изменят.
да насчет всех я погорячился
ну вот число
-2147483648(0х80000000) надеюсь о 32 разрядных говорим
сдвиг
получаем 0хFFFF0000
инкремент 0хFFFF0001
&0xFFFFFFFE
=
0хFFFF0000
получается что это диапазон чисел
от 0 до 215
и малых отрицательных( больших по модулю)
только зачем это ума не приложу
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
15.01.2014, 02:03     Как работает функция "test" в приведенном коде #19
ValeryS, все верно, но если тип занимает не более 2 байт. Я присоединяюсь к
Цитата Сообщение от HighPredator Посмотреть сообщение
Вот глядя на все это у меня возникла мысль, что код рассчитан изначально не на long int, а на short int.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.01.2014, 02:03     Как работает функция "test" в приведенном коде
Еще ссылки по теме:

C++ Структура "Штраф". Функция поиска криво работает
Патерн "прототип" не работает, выдаёт ошибку "недопустимый вызов нестатической ф-ции", где я в коде ошибка? C++
Не работает функция itoa(): "was not declared in this scope" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Zla9_Kolu4ka
2 / 2 / 0
Регистрация: 28.08.2013
Сообщений: 398
15.01.2014, 02:03  [ТС]     Как работает функция "test" в приведенном коде #20
-2147483648(0х80000000) надеюсь о 32 разрядных говорим
Этот код под 16 бит, а не 32
Yandex
Объявления
15.01.2014, 02:03     Как работает функция "test" в приведенном коде
Ответ Создать тему
Опции темы

Текущее время: 21:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru