Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   сложение произведений (http://www.flasher.ru/forum/showthread.php?t=121049)

Anoxia 06.02.2009 11:58

сложение произведений
 
извиняюсь если не правильно назвал тему

складываю произведения и впринципе все без проблем
Код AS1/AS2:

c =  (a*b) + (a1*b1) + (a2*b2) + (a3*b3) + (a4*b4) + (a5*b5)

но иногда таких данных очень много и количество данных может меняться
можно ли написать такую формулу короче?

dimarik 06.02.2009 12:08

Заносите множители попарно в массив. В цикле перемножайте и складывайте.

Код AS1/AS2:

var array:Array = new Array();
 
// Заполнение
var i:                Number = 11;
var a:                Number;
var b:                Number;
var tmpArr:        Array = new Array();
 
while (i--) {
        tmpArr[0] = int( Math.random() * 100 );
        tmpArr[1] = int( Math.random() * 100 );
        array.push(tmpArr);
}
 
// Суммирование произведений
var len:        Number = array.length;
var result:        Number = 0;
for (i = 0; i < len; i++) {
        result += array[i][0] * array[i][1];
}
 
trace('Summ: ' + result);


Anoxia 06.02.2009 12:55

ого)
спасибо буду пробовать

silin 06.02.2009 15:18

как вариант
Код AS1/AS2:

var s = sumPair(1, 2, 3, 4, 5, 6);
trace( "s : " + s );
function sumPair()
{
        var res = 0;
        for (var i:Number = 0; i < arguments.length; i+=2)
        {
                res+=arguments[i]*arguments[i+1]
        }
        return res;
}


dimarik 06.02.2009 15:59

Аха, у silin'a приятственнее. Еще оформить как NumberUtils.sumPair() и вообще шикарно будет =)


Часовой пояс GMT +4, время: 17:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.