Вход | Регистрация
 
Информационные технологии :: Математика и алгоритмы

Дайте функцию целочисленного деления

↓ [Волшебник, 13.10.20 - 09:01]
Дайте функцию целочисленного деления
Я
   МаленькийВопросик
 
12.10.20 - 17:05
Товарищи, дайте функцию целочисленного деления: например на входе 5 и 3 - на выходе 3,1,1

Или 7 и 4 - на выходе 4, 1, 1,1

Спасибо!
   ДенисЧ
 
1 - 12.10.20 - 17:09
А можно логику, по которой из 5 и 3 получается  3,1,1 ?
   Андроны едут
 
2 - 12.10.20 - 17:10
а если 17 поделить на 4  - что вы ожидаете увидеть?
   Irbis
 
3 - 12.10.20 - 17:10
% вроде возвращает остаток от деления, а уж целую часть и так можно получить.
   PR
 
4 - 12.10.20 - 17:14
(2) 4, 1
   PR
 
5 - 12.10.20 - 17:14
(0) Такой наркоманской функции нет, пиши сам
   Dmitry1c
 
6 - 12.10.20 - 17:15
(5) а у него будет.
   МаленькийВопросик
 
7 - 12.10.20 - 17:15
17/4 = 4,25 = 5 , 17 - 5 = 12, 12/3  =4

5,4,4,4,4
   Dmitry1c
 
8 - 12.10.20 - 17:16
(0) а почему на входе 5 и 3 - на выходе не 3,2?
   PR
 
9 - 12.10.20 - 17:16
Функция-то простая
Берем Цел от числа и к ней % от числа раз прибавляем ", 1"
   МаленькийВопросик
 
10 - 12.10.20 - 17:16
5,4,4,4
   PR
 
11 - 12.10.20 - 17:16
Ааааа, держите наркомана!
   МаленькийВопросик
 
12 - 12.10.20 - 17:18
(11) ну так ты напиши....
   polosov
 
13 - 12.10.20 - 17:19
(10) Моргни 2 раза, если тебя приковали к батарее в цыганском ломбарде и заставили его автоматизировать.
   PR
 
14 - 12.10.20 - 17:19
(12) Да я до (7) и (10) думал, что функция типа (9), а тут вообще что-то люто наркоманское, я даже не понял еще, что делается-то
   ДенисЧ
 
15 - 12.10.20 - 17:20
Вроде не пятница...
   mikecool
 
16 - 12.10.20 - 17:21
сборище наркоманов... еще и понять это пытаются )))
   RomanYS
 
17 - 12.10.20 - 17:24
(16) Ну такое не каждый день подвозят)
   RomanYS
 
18 - 12.10.20 - 17:25
(7) а почему тогда в (0)
для 5/3 не 2,2,1
для 7/4 не 2,2,2,1?
   Ботаник Гарден Меран
 
19 - 12.10.20 - 17:26
Разложить на сумму простых чисел?
   Ботаник Гарден Меран
 
20 - 12.10.20 - 17:27
Ааа, 4 - не простое число.
"Курильщики!" (С) Водный мир.
   RomanYS
 
21 - 12.10.20 - 17:27
(19) :)))
4 - не простое
   Андроны едут
 
22 - 12.10.20 - 17:30
(10) неправильно, должно быть так: 17/4 = 4+4+4+4+1
   Андроны едут
 
23 - 12.10.20 - 17:31
(22) а 18/4 - 4,4,4,4,1,1
   Garykom
 
24 - 12.10.20 - 17:32
(23) Объясни почему не 4,4,4,4,2 ?
   Garykom
 
25 - 12.10.20 - 17:33
(0) Почему не 3,2 и не 4,3 ?
   Андроны едут
 
26 - 12.10.20 - 17:33
(24) потому-что используем только делитель и единицу
   RomanYS
 
27 - 12.10.20 - 17:34
(22) а критерии правильности какие нателепатировал?
(22) делишь на четверых, а слагаемых 5. А в (23) вообще 6
   Garykom
 
28 - 12.10.20 - 17:34
(26) а терь смотри (7) и скажи где "единицы" ?
   RomanYS
 
29 - 12.10.20 - 17:38
(0) В какой конфе нужно? Подскажу готовую функцию ))
   Андроны едут
 
30 - 12.10.20 - 17:38
(28) так я и написал, что это неправильно, а правильно в (22) Логика такая  - разложить число на сумму делителя и единицы. Так я понял задачу из примеров в топике. Если у вас другое понимание - дерзайте)
 
 Рекламное место пустует
   VladZ
 
31 - 12.10.20 - 17:39
Что за наркомания?
   RomanYS
 
32 - 12.10.20 - 17:39
(31) Телепатию тренируем
   Андроны едут
 
33 - 12.10.20 - 17:40
(31) понедельник день тяжелый
   Fish
 
34 - 12.10.20 - 17:41
(24) Потому что делим на 4, значит, результат должен быть из 4-х чисел.
   ZDenis
 
35 - 12.10.20 - 17:41
Может кто-то объяснить (7). Если в (0) еще как то можно понять, то в (7) ничего не понимаю
   Сияющий в темноте
 
36 - 12.10.20 - 17:41
функция целочисленного деления-это div процессора,когда в одном регистре делимое,а в другом делитель
получаем же мы в первом неполное частное,а во-втором,остаток.
все остальные функции к целочисленному делению имеют очень оплсредованное выражение.

то есть формула
делимое=делитель*НеполноеЧастное+Остаток
   Fish
 
37 - 12.10.20 - 17:42
+(4) Когда делим 5 на 3 - то в результате 3 числа.
   Андроны едут
 
38 - 12.10.20 - 17:42
(34) тогда не будет однозначности результата
   Fish
 
39 - 12.10.20 - 17:44
(38) Ну тут вообще сложно понять, что хочет ТС. Но по (0) и (10) такая закономерность прослеживается.
   rphosts
 
40 - 12.10.20 - 17:45
(0) я так понимаю что ты текущий день поделил на 7 =и получил что сегодня пятница... нет, дружок, сегодня понедельник, но настроение ты поднял, как минимум мне
   VladZ
 
41 - 12.10.20 - 17:45
А зачем эти нелепые телодвижения?
   RomanYS
 
42 - 12.10.20 - 17:53
ладно, ТС на (29) не отвечает.
Мой телепат мне говорит, что в (0) он всё перепутал. А для (7) ему нужно что-то похожее на:


Функция РазделитьПочтиПоровнуНацело(Делимое, Делитель)
    База = Новый Массив();
    Для инд = 1 По Делитель Цикл
        База.Добавить(1);
    КонецЦикла;
    Возврат ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(Делимое, База, 0);//БСП
КонецФункции // ()
   Андроны едут
 
43 - 12.10.20 - 17:53
(41) ну я бы не сказал, что это нелепые телодвижения. Я, как человек с профильным математическим образованием, могу рассматривать тему из топика как начало исследования некой алгебраической группы. С целью написания в дальнейшем диссертации))
   mikecool
 
44 - 12.10.20 - 18:01
вы тут пишете дофина, а автор сидит в углу и курит, и ржет
   hhhh
 
45 - 12.10.20 - 18:48
(34) чего вы не понимаете? Это деление по упаковкам. Если в упаковке 4 штуки, значит, чтобы получить 17, нужно взять 4 целых упаковкм и 1 отдельную штуку. Будет 4+4+4+4+1. Это для грузчиков. Экстрасенсы блин.
   Креветос
 
47 - 12.10.20 - 19:16
(0) Почему при делении 5 на 3 получается 3 1 1, а не 1 2 2?
Счетчик будет 3. На него всегда делим.
5 / 3 = 1 + 2/3
берем результат 1, записываем в ответ.
Отнимаем результат из общего количества:
5 - 1 = 4.
Уменьшаем счетчик 3 на единицу, будет 2. Делим оставшееся количество 4 на счетчик 2:
4 / 2 = 2
берем результат 2, записываем в ответ. Там уже 1 2.
Отнимаем результат из общего количества:
4 - 2 = 2.
Уменьшаем предыдущий счетчик 2 на единицу, будет 1. Делим 2 из предыдущего выражения на счетчик.
2 / 1 = 2.
берем результат 2, записываем в ответ. Там уже 1 2 2.
Отнимаем результат из общего количества:
2 - 2 = 0.
Уменьшаем предыдущий счетчик 0 на единицу, будет 0
Счетчик достиг нуля, общее количество тоже ноль. Цикл завершается. Ответ 1 2 2
   Креветос
 
48 - 12.10.20 - 19:17
7 делим на 4 получается по такому же алгоритму:
1 2 2 2
   Креветос
 
49 - 12.10.20 - 19:18
(2) 17 делим на 4 получается:

4 4 4 5
   Креветос
 
51 - 12.10.20 - 19:27
(50) Ты че, больной? Чел задал конкретный вопрос, я ему ответил.
   Креветос
 
52 - 12.10.20 - 19:36
Другой вариант, более быстрый, без цикла.
К примеру делим 17 на 4:

17 / 4 = 4.25

Берем дробную часть частного 0.25, умножаем на 4, получается 1. Это значит что результат будет состоять из 1 числа, котороя больше чем целая часть частного на 1 (в данном случае это 4 + 1 = 5), а остальные числа будут равны целой части частного, то есть 4.
Итого ответ: 5 4 4 4
   RomanYS
 
53 - 12.10.20 - 19:49
(52) >>Берем дробную часть частного 0.25, умножаем на 4, получается 1.
ОстатокОтДеления = Делимое % Делитель;
   hhhh
 
54 - 12.10.20 - 20:15
(52) ты (45) читал. Упаковки только одного вида - по 4 шт. По 5 штук нету.

поэтому ответ  4 4 4 4 1. Четыре целые упаковки и одна штука отдельная.
   МихаилМ
 
55 - 12.10.20 - 20:27
(54)
в (10)  у автора другой ответ - 5,4,4,4
так что есть упаковки по 5 штук.
   aka AMIGO
 
56 - 12.10.20 - 20:57
Без единиц измерения задача весьма неоднозначная, и запутывает, потому в ветке нет единого мнения.
   Ненавижу 1С
 
57 - 12.10.20 - 21:17
Функция Раскурить(А,Б)
  Результат = Новый Массив(Б);
  Остаток = А % Б;
  НеполноеЧастное = (А-Остаток)/Б;
  Для й=0 по Результат.ВГраница() Цикл
    Результат[й] = НеполноеЧастное + ?(й=0,Остаток,0);
  КонецЦикла;
  Возврат Результат;
КонецФункции
   RomanYS
 
58 - 12.10.20 - 21:21
(57) может так?
    Результат[й] = НеполноеЧастное + ?(й < Остаток , 1, 0);
   Ненавижу 1С
 
59 - 12.10.20 - 21:23
(58) нет, иначе не получите: "7 и 4 - на выходе 4, 1, 1,1"
   RomanYS
 
60 - 12.10.20 - 21:44
(59) а да, прикольно, у тебя получилось (0) и (7) в одну "формулу" загнать. Респект.
Осталось дождаться ТС и узнать, что ему всё-таки было нужно и зачем))
 
 Рекламное место пустует
   Креветос
 
61 - 12.10.20 - 22:17
(54) Читал. Там какая-то хрень ненужная.
   hhhh
 
62 - 12.10.20 - 23:01
(61) нужно разбить на упаковки. сколько целых упаковок, а сколько россыпью.
   Михаил Козлов
 
63 - 12.10.20 - 23:53
(62) Выражаясь "высоким" стилем: найти лексикографически "первое" решение уравнения: СУММА(Аi*Xi)=B в целых положительных. Лексикографически по Ai (Ai>Aj при j>i, т.е. с наибольшим числом больших упаковок). Решение существует если НОД(Ai) = НОД(Ai,B). Решение очевидно: Xi = Bi%Ai, где B1 = B, Bi=B(i-1)-Ai*Xi.
   palsergeich
 
64 - 13.10.20 - 00:33
Короче.
Задача на размен.
На входе есть любое число.
А у тебя в кассе есть только делитель и 1чки.
Школа же.
   RomanYS
 
65 - 13.10.20 - 00:35
(62) (64) посмотрите (7)
   palsergeich
 
66 - 13.10.20 - 00:38
(65) Я вот это не понял
17/4 = 4,25 = 5
Как?
   RomanYS
 
67 - 13.10.20 - 00:47
(66) Это у ТС надо спросить :)
Под (0) и под (7) только (57) подходит. А вот зачем ТСу такое распределение - загадка, весьма вероятно, что он просто накосячил и ему нужны ваши упаковки или "поделить приблизительно поровну"
   Михаил Козлов
 
68 - 13.10.20 - 08:55
(63)+ Если иметь в виду (62), ошибся. Нужно минимизировать число упаковок: СУММА(Xi), а это ранец.
Жадный алгоритм в (63) может не дать решения: например, 3 упаковки 4,3 и 1 шт. Нужно подобрать 6. "Жадное" решение (1,0,2), а нужно (0,2,0).
   mikecool
 
69 - 13.10.20 - 08:56
Один глупец может задать вопрос, который не решить и сотне мудрецам...


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.