arkadaşlar bir sorum var şu şekil :
5*5 boyutlu bir dizinin içeriğine rastgele sayılar atanacaktır.
Oluşturulan 2 boyutlu dizinin soldan sağa ve sağdan sola olan köşegenlerini toplayan program.
soldan sağa sorun toplatabiliyorum.indeks numaraları eşit olunca. ama sağdan
sola olduğunda nasıl bir işlem yapmam gerekiyor. farklı olan indeksleri nasıl çapraz toplatabilirm .:/
private void button1_Click(object sender, EventArgs e)
{
int[,] dizi = new int[5, 5];
for (int satir = 0; satir < 5; satir++)
{
for (int sutun = 0; sutun < 5; sutun++)
{
dizi[satir, sutun] = rnd.Next(1, 10);
listBox1.Items.Add("["+sutun+"]"+"["+ satir+"]");
listBox2.Items.Add(dizi[satir, sutun]);
if(satir==sutun)
{
toplam = toplam + dizi[satir, sutun];
}
toplam2 = (dizi[4, 0] + dizi[3, 1] + dizi[1, 3] + dizi[0, 4]-dizi[2,2]);
textBox1.Text = toplam2.ToString();
textBox1.Text = (toplam + toplam2).ToString();
}
}
}
Çapraz şöyle toplatabilirsin:
int[,] Array = new int[5, 5];
Random rnd = new Random();
int Sum = 0;
//Array'a rastgele değer ver
for (int r = 0; r <= Array.GetUpperBound(0); r++)
{
for (int c = 0; c <= Array.GetUpperBound(1); c++)
{
Array[r, c] = rnd.Next(1, 100);
}
}
//Köşegenleri hesaplat
int Row = 0;
int Col = 0;
for (Row = 0; Row <= Array.GetUpperBound(0); Row++)
{
Sum = Sum + Array[Row, Col];
Col += 1;
}
Col = 0;
for (Row = 0; Row <= Array.GetUpperBound(0); Row++)
{
Sum = Sum + Array[Array.GetUpperBound(0) - Row, Col];
Col += 1;
}
//iki kere hesaplanan değeri çıkart
Sum = Sum - Array[((Array.GetUpperBound(0) + 1 + 1) / 2) - 1, ((Array.GetUpperBound(1) + 1 + 1) / 2) - 1];
MessageBox.Show (Sum.ToString());