2016-03-28 17 views
-3

gerçekleştirirken 2D dizideki değerleri görmezden Nasıl. Ardından kalan değerlerin toplamını hesaplayın.herhangi 2D array (en küçük/büyük değeri birden fazla kopyasını varsa sadece birini görmezden) Her dizide en küçük ve en büyük değerleri görmezden Verilen hesaplamaları

int[,] scores = { 
          { 5, 8, 9, 3, 8, 5}, 
          { 3, 9, 6, 3, 9, 5, 7} 
         }; 

birinci dizinin toplam ikinci dizinin toplam 30

deposu bu toplamları her dönmek 26 dönüş olur.

+0

gerçekten öğeyi hariç tutmak ya da sadece yukarıdaki kriterlere göre toplamını hesaplamak istiyor musunuz? Ayrıca, sıralama (başlıkta belirtilen) nasıl ilişkilidir? – Tal

+0

Bu gerçekten ev ödevi sorusu yayınlamak için bir yer değildir ve sizin için yazılan cevapları almayı bekler. –

+0

Sıralamalarım oldu çünkü bir dizinin diziyi sıralarken sıralamak için bir çözüm olabileceğine inandım ve diziyi toplarken ilk ve son değerleri göz ardı ettim. Ve sonuçların yukarıdaki kriterlere göre hesaplanabilmesi durumunda, öğenin hariç tutulmasına gerek yoktur. Bu – Michael

cevap

0

sana soru Dizileri (Jagged Arrays) ait MultiDimensional dizi veya Array üzerindedir şüphesiz. Farklı dimensionsMultiDimensional dizileri yok olabilir.

Yani şimdi bu yapabileceğini, sen dizinin dizi var varsayalım.

int[][] numbers2 = new int[][] 
    { 
     new int[] {1, 4,5,6, 10}, 
     new int[] {1,-2,3, 10, 1, }, 
     new int[] {-7,-8,-9, -1, 0} 
    }; 

    var sum_array =numbers2.Select(x => x.OrderBy(c=>c) 
             .Skip(1) 
             .Take(x.Length-2) 
             .Sum(c=>c)  
           ); 

Çıktı: Eğer Multidimensional diziler ile uğraşmak istiyorsanız

15,5,-16 

durumda, bunu.

int[,] numbers = new int[3,5] 
    { 
     {1, 4,5,6, 10}, 
     {1,-2,3, 10, 1, }, 
     {-7,-8,-9, -1, 0} 
    }; 


    var row_sum = numbers.Cast<int>()  
    .Select((x, i) => new { Index = i, Value = x }) 
    .GroupBy(x => x.Index/(numbers.GetUpperBound(1) +1)) 
    .Select(x => x.OrderBy(c=>c.Value).Skip(1).Take(numbers.GetUpperBound(1)-1).Sum(c=>c.Value)) 
    .ToArray(); 

Her iki durumda da aynı çıktıyı elde edersiniz.

Kontrol example

İlgili konular