|
Задачка: исключение нулей при умножении
| ☑ |
0
list770
27.11.18
✎
10:42
|
Здравствуйте! Помогите пожалуйста решить задачу. Нужно рассчитать коэффициенты путем умножения чисел. Упрощенно это выглядит так:
К1 = Ч1*Ч2*Ч3*Ч4
К2 = Ч2*Ч3*Ч4
К3 = Ч3*Ч4
Среди Чисел попадаются нули. Как-нибудь можно исключить нули при умножении, не расписывая цикл для каждого коэффициента (коэффициентов и чисел на самом деле больше)
|
|
1
ZDenis
27.11.18
✎
10:44
|
?(Ч1=0,1,Ч1) * ...
|
|
2
1Сергей
27.11.18
✎
10:44
|
к=1
Для каждого Ч из МассивЧ Цикл
Если Ч<>0 Тогда
к=к*ч
конецесли
КонецЦикла
|
|
3
list770
27.11.18
✎
10:55
|
(1) Спасибо. Но без циклов похоже никак не обойдется. Дело в том, что если не все числа равны нулю, тогда умножать ненулевые, а если все Ч=0, тогда и К=0
|
|
4
1Сергей
27.11.18
✎
10:56
|
(3) я просто не представляю как ты без цикла собрался перемножать неопределенное количество чисел. Пусть даже без нулей
|
|
5
Ненавижу 1С
гуру
27.11.18
✎
11:01
|
Произведение=1;
Счетчик = 0;
Для каждого Ч из МассивЧ Цикл
Если Ч<>0 Тогда
Произведение = Произведение*Ч;
Счетчик = Счетчик+1;
конецесли
КонецЦикла
Возврат ?(Счетчик=0,0,Произведение);
|
|
6
exwill
27.11.18
✎
11:02
|
(3) Если очень хочешь без цикла, тогда:
К1=мин(?(Ч1=0,1,Ч1)*?(Ч2=0,1,Ч2)*?(Ч3=0,1,Ч3),Ч1+Ч2+Ч3)
А оно тебе надо?
|
|
7
1Сергей
27.11.18
✎
11:03
|
(6) насчет мин не понял. К чему это?
|
|
8
exwill
27.11.18
✎
11:05
|
+(6)
К1=?(Ч1+Ч2+Ч3=0,0,?(Ч1=0,1,Ч1)*?(Ч2=0,1,Ч2)*?(Ч3=0,1,Ч3))
извините
|
|
9
list770
27.11.18
✎
11:05
|
(6) То, что надо, спасибо))))
|
|
10
exwill
27.11.18
✎
11:06
|
(9) Правильно (8)
|
|
11
list770
27.11.18
✎
11:09
|
(10) да да, понял
|
|
12
Дмитрий
27.11.18
✎
11:13
|
(10) если коэффициенты положительные )
|
|
13
youalex
27.11.18
✎
11:42
|
СтрФормата = "ЧРД=.; ЧН=1; ЧГ=";
Сообщить(Вычислить(СтрШаблон("%1*%2*%3*%4", Формат(Ч1, СтрФормата), Формат(Ч2, СтрФормата),Формат(Ч3, СтрФормата), Формат(Ч4, СтрФормата))));
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший