2013-10-12 8 views
4

Как умножить содержимое list <double>?Как умножить все элементы в списке парных?

List<double> mult=new List<double>{3, 5, 10}; 

До сих пор у меня есть:

double r=0.0; 
for(int i=0;i<mult.Count;i++) 
{ 
    r=mult[i]*mult[(i+1)]; 
} 
+0

Непонятный вопрос. Чего вы пытаетесь достичь? Вы даже пытались запустить образец кода? –

ответ

13

Чтобы исправить петли, начните с 1.0 и умножить каждый элемент в списке, как это:

double r = 1.0; 
for(int i = 0; i < mult.Count; i++) 
{ 
    r = r * mult[i]; // or equivalently r *= mult[i]; 
} 

Но для простоты, вы может использовать небольшой Linq с помощью метода расширения Aggregate:

double r = mult.Aggregate((a, x) => a * x); 
+0

Как работает этот метод Aggregate? – stackptr

+2

@EdwardKarak Метод 'Aggregate' начинается с первого элемента списка и применяет некоторое преобразование (в данном случае, просто умножая) к каждому последующему элементу, используя результат предыдущего преобразования в следующем. Дополнительную информацию см. В документации. –

+0

Как насчет параметров ((a, x) => a * x)? – stackptr

2

Что вы имеете в виду, умножая? Если вы хотите рассчитать продукт, тогда ваш код будет неправильным, а правильный код будет

double r=1.0; 
for(int i=0;i<mult.Count;i++) 
{ 
    r *= mult[i]; 
} 
Смежные вопросы