Имя: Пароль:
1C
 
Функция на размышление
, , ,
0 1nvertex
 
02.11.16
22:47
Нужна функция F(Х,У) с двумя параметрами, где
Х - целочисленное от 1 до 11111. Все числа внутри либо 0 либо 1
У - число от 1 до 5
Функция должна возвращать число из Х по номеру У
Например:
F(10101,3) = 1
F(10101,4) = 0
F(10110,1) = 1
F(1001,1) = 0
Функции доступны только арифметические операции, условия и циклы. Строковые операции недоступны.
Как решить?
1 1nvertex
 
02.11.16
22:48
Округления тоже недоступны
2 vde69
 
02.11.16
23:01
типа того (наверно ошибки есть но суть понятна)

если x%(y**10) > 0 тогда возврат 1 иначе возврат 0
3 Lama12
 
02.11.16
23:04
(0) Хорошая попытка.:-)
Промолчу, пусть молодежи подумает.
4 Serg_1960
 
02.11.16
23:07
Смеха ради вспомнилось :)
Автор: vde69

мЧисло = ТвоеЧисло % 256;
Бит8 = (мЧисло - (мЧисло % 128)) > 0
мЧисло = мЧисло % 128;
Бит7 = (мЧисло - (мЧисло % 64)) > 0
мЧисло = мЧисло % 64;
Бит6 = (мЧисло - (мЧисло % 32)) > 0
мЧисло = мЧисло % 32;
...
5 Serg_1960
 
02.11.16
23:22
Цифра1 = Х - Цел(Х/10)*10;
Х = Цел(Х/10);
Цифра2 = Х - Цел(...
6 GedKo
 
02.11.16
23:29
а почему?
>F(1001,1) = 0
7 GedKo
 
02.11.16
23:30
Затупил, снимаю вопрос :(
8 GedKo
 
02.11.16
23:31
Затупил дважды, поднимаю обратно :)
9 Serg_1960
 
02.11.16
23:41
Хмм... думаешь автор не может тупить? Ты - можешь, а он - нет? Сама его тема говорит об обратном :)

PS: просто ошибка в последнем примере - не дописал нолик. По условию ясно же, что должно быть пять разрядов в числе.
10 Злопчинский
 
02.11.16
23:46
Сильно смахивает на что-то с двоичным основанием,
11 Asmody
 
02.11.16
23:49
(0) Автор, ты разницу между числом и цифрой понимаешь?
12 Злопчинский
 
02.11.16
23:56
(11) число не является цифрой, но  цифра сама по себе обозначает число, не придирайся
13 GedKo
 
03.11.16
00:01
(12) вранье :)
14 Йохохо
 
03.11.16
00:09
что то было, что при сдвиге бит переполнения устанавливался, 2^5 -х - 1 двигаем и вуаля
15 Asmody
 
03.11.16
00:28
(12) шта?!
цифра ничего сама по себе не обозначает. цифра - это символ, крючок.
напротив, число - суть вещь. оно существует независимо от каких-то цифр.
16 Злопчинский
 
03.11.16
00:38
(15) если у тебя нет символов обозначающих сущность ты не сможешь работать с этой сущностью
17 Mauser
 
03.11.16
00:43
(12), (16) Ты еще скажи, что у числа есть позиция
18 shpioleg
 
03.11.16
00:52
(0) Вроде работает

&НаКлиенте
Функция F(Знач X,Знач Y)
    Y = 5 - Y;
    Для ш = 0 по Y Цикл
        Остаток = X%10;
        X = (X - 1)/10;
    КонецЦикла;
    Возврат Остаток;
КонецФункции

&НаКлиенте
Процедура Команда1(Команда)
    Сообщить (F(X,Y));
КонецПроцедуры
19 shpioleg
 
03.11.16
00:54
+(18) Верней
X = (X - Остаток)/10;
20 Злопчинский
 
03.11.16
01:32
(18) некузяво
% - некошерная операция, не подходит по условиям задачи
21 kuzyara
 
03.11.16
03:21
F = x & 1 << y
22 wertyu
 
03.11.16
05:22
Функция F(Знач Х, Знач У)
    
    Перем Цифра;
    
    Для НЦ = 1 По 5 Цикл
        Множитель = 1;
        Для Степень = 1 По 5 - НЦ Цикл
            Множитель = Множитель * 10;
        КонецЦикла;
        //Множитель = Pow(10, 5 - НЦ);
        Х = Х - Множитель;
        Если Х >= 0 Тогда
            Цифра = 1;
        Иначе
            Цифра = 0;
            Х = Х + Множитель;
        КонецЕсли;
        Если НЦ = У Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;
    Возврат Цифра;
КонецФункции
23 wertyu
 
03.11.16
05:26
пожалуй уберу "Прервать"

Функция F(Знач Х, Знач У)
    
    Перем Цифра;
    
    Для НЦ = 1 По У Цикл
        Множитель = 1;
        Для Степень = 1 По 5 - НЦ Цикл
            Множитель = Множитель * 10;
        КонецЦикла;
        //Множитель = Pow(10, 5 - НЦ);
        Х = Х - Множитель;
        Если Х >= 0 Тогда
            Цифра = 1;
        Иначе
            Цифра = 0;
            Х = Х + Множитель;
        КонецЕсли;
    КонецЦикла;
    Возврат Цифра;
КонецФункции
24 d546
 
03.11.16
08:21
(20) Смотрим справку

Арифметические операции
В языке  определены следующие виды арифметических операций:

сложение
(Оп1 + Оп2)

вычитание
(Оп1 - Оп2)

умножение
(Оп1 * Оп2)

деление
(Оп1 / Оп2)

остаток от деления
(Оп1 % Оп2)

унарный минус
(-Оп1)
25 Ildarovich
 
03.11.16
10:56
Вот еще вариант:[CODE]Функция Ф(Х, У)
    Возврат ?(У < 2, 0 + (Х > 9999), Ф((Х - 10000 * (Х > 9999)) * 10, У - 1))
КонецФункции[/CODE]
26 Ildarovich
 
03.11.16
10:57
+(25) ... Функция Ф(Х, У)
    Возврат ?(У < 2, 0 + (Х > 9999), Ф((Х - 10000 * (Х > 9999)) * 10, У - 1))
КонецФункции
27 Лефмихалыч
 
03.11.16
10:59
(0) почему у тебя
F(10110,1) = 1
и
F(1001,1) = 0
?
28 Лефмихалыч
 
03.11.16
11:00
(0) log10() можно использовать?
29 shpioleg
 
03.11.16
11:04
(27) У него со старших битов начинается. Если разрядность маленькая, то спереди нули. Я так понял...
30 1nvertex
 
03.11.16
17:48
Во вы тут накодили! =)))
31 1nvertex
 
03.11.16
17:48
(28) Не... нельзя
32 1nvertex
 
03.11.16
17:49
(27) Да, все верно F(1001,1) = 0 потому что первое число отсутствует
33 1nvertex
 
03.11.16
17:58
(23)  wertyu, работает!
34 1nvertex
 
03.11.16
18:00
(26) Ildarovich, круто!!!
35 1nvertex
 
03.11.16
18:09
(18) shpioleg - читер (%), зато самый скоростной =))
36 1nvertex
 
03.11.16
18:15
Ildarovich, кинь контакт в личку, с меня угощение!
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший