2010-06-16 21 views
1

我有一個int值列表像下面的一些事情(上限和下限是動態的)名單C#計算項目<int>值和垂直

1, 2, 3 
4, 6, 0 
5, 7, 1 

我想在垂直明智的計算列值像

1 + 4 + 5 = 10 
2 + 6 + 7 = 15 
3 + 0 + 1 = 4 

預期結果= 10,15,4

任何幫助,將理解

感謝

迪普

+0

這是功課? – 2010-06-16 09:43:50

+3

你如何獲得輸入數據? 'List '是1維;那麼它是{1,2,3,4,6,0,5,7,1}?或者是什麼? – 2010-06-16 09:44:47

+0

你如何存儲數字?他們是否都在一個九元素列表中? – 2010-06-16 09:45:07

回答

2

下面是一個使用數組文本輸入數據,但後續代碼的工作原理完全對數組或列表相同。

var grid = new [] 
      { 
       new [] {1, 2, 3}, 
       new [] {4, 6, 0}, 
       new [] {5, 7, 1}, 
      }; 

現在產生一個序列與用於每個列的一個項目(以最短的行中的元素的數量),其中,所述項目的值是行[柱]值的總和:

var totals = Enumerable.Range(0, grid.Min(row => row.Count())) 
         .Select(column => grid.Sum(row => row[column])); 

打印的是:

foreach (var total in totals) 
    Console.WriteLine(total); 
+0

丹尼爾,謝謝您的幫助很大,它的工作... – Deepu 2010-06-16 12:55:21

0

你必須使用 「目錄」 -object? Elseway,我會使用一個二維數組。否則,您可以嘗試一下,如何分開地到達行和列,以便您可以在簡單for循環中添加數字。它取決於List對象的方法。

2

如果您使用二維數組,您可以對每行的第一列,第二列...進行求和。

如果使用一維數組,你可以簡單地使用模:

int[] results = new results[colCount]; 
for(int i=0, i<list.Count; list++) 
{ 
    results[i%colCount] += list[i]; 
} 
0

相當呆板基礎上的問題,但如何:

int ans = 0; 
for(int i = 0; i < list.length; i+=3) 
{ 
    ans+= list[i]; 
} 

您可以使用不同的初始迭代器值運行3次相同的操作,也可以將整個事件作爲運行3次的interator與startValue一起放入另一個循環中。

說了這些之後,您可能想要a)查看存儲數據的不同方式,如果它們確實存在於單個列表中b)查看更靈活的方法或將其封裝到允許你拿在考慮到不同的列數等...

乾杯, 亞當