Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
479
Tıklama
0
Öne Çıkarma
C# döngü içindeki if lerden kurtulmak istiyorum.
F
6 yıl
Yüzbaşı
Konu Sahibi

Başlıktan da anlayacağınız gibi. For döngüsünün içindeki if, else if ler den kurtulmak istiyorum.
1000 elemanlı bir dizi olsaydı 1001 tane if yazmak zorunda mı kalacaktım...

Yardımcı olmaya çalışan arkadaşlara şimdiden TEŞEKKÜR ediyorum.


public static decimal[] dizimiz = new decimal[10];// Dizimizin 10 elemanı var.

public static decimal elimdeki_TL = 2500.00m;
public static decimal elimdeki_USD = 1293.10m;

public static decimal usd_kuru = 5.80m;

public static decimal toplam_param = elimdeki_TL + (elimdeki_USD * usd_kuru); // Toplam param 9998,98

public static decimal dizielemanlarininalacagienbuyukdeger = toplam_param / dizimiz.Length; // 999,9980

public static decimal aktifolandizielemanı = Math.Ceiling(elimdeki_TL / dizielemanlarininalacagienbuyukdeger);

private void Form1_Load(object sender, EventArgs e)
{
for (int i = dizimiz.Length; i > dizimiz.Length - aktifolandizielemanı; i--)
{



if (aktifolandizielemanı == 0)
{
}
else if (aktifolandizielemanı == 1)
{
dizimiz[9] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
}
else if (aktifolandizielemanı == 2)
{
dizimiz[8] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
dizimiz[9] = dizielemanlarininalacagienbuyukdeger;
}
else if (aktifolandizielemanı == 3)
{
dizimiz[7] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
dizimiz[8] = dizielemanlarininalacagienbuyukdeger;
dizimiz[9] = dizielemanlarininalacagienbuyukdeger;
}
else if (aktifolandizielemanı == 4)
{
dizimiz[6] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
dizimiz[7] = dizielemanlarininalacagienbuyukdeger;
dizimiz[8] = dizielemanlarininalacagienbuyukdeger;
dizimiz[9] = dizielemanlarininalacagienbuyukdeger;
}
else if (aktifolandizielemanı == 5)
{
dizimiz[5] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
dizimiz[6] = dizielemanlarininalacagienbuyukdeger;
dizimiz[7] = dizielemanlarininalacagienbuyukdeger;
dizimiz[8] = dizielemanlarininalacagienbuyukdeger;
dizimiz[9] = dizielemanlarininalacagienbuyukdeger;
}
else if (aktifolandizielemanı == 6)
{
dizimiz[4] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
dizimiz[5] = dizielemanlarininalacagienbuyukdeger;
dizimiz[6] = dizielemanlarininalacagienbuyukdeger;
dizimiz[7] = dizielemanlarininalacagienbuyukdeger;
dizimiz[8] = dizielemanlarininalacagienbuyukdeger;
dizimiz[9] = dizielemanlarininalacagienbuyukdeger;
}
else if (aktifolandizielemanı == 7)
{
dizimiz[3] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
dizimiz[4] = dizielemanlarininalacagienbuyukdeger;
dizimiz[5] = dizielemanlarininalacagienbuyukdeger;
dizimiz[6] = dizielemanlarininalacagienbuyukdeger;
dizimiz[7] = dizielemanlarininalacagienbuyukdeger;
dizimiz[8] = dizielemanlarininalacagienbuyukdeger;
dizimiz[9] = dizielemanlarininalacagienbuyukdeger;
}
else if (aktifolandizielemanı == 8)
{
dizimiz[2] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
dizimiz[3] = dizielemanlarininalacagienbuyukdeger;
dizimiz[4] = dizielemanlarininalacagienbuyukdeger;
dizimiz[5] = dizielemanlarininalacagienbuyukdeger;
dizimiz[6] = dizielemanlarininalacagienbuyukdeger;
dizimiz[7] = dizielemanlarininalacagienbuyukdeger;
dizimiz[8] = dizielemanlarininalacagienbuyukdeger;
dizimiz[9] = dizielemanlarininalacagienbuyukdeger;
}
else if (aktifolandizielemanı == 9)
{
dizimiz[1] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
dizimiz[2] = dizielemanlarininalacagienbuyukdeger;
dizimiz[3] = dizielemanlarininalacagienbuyukdeger;
dizimiz[4] = dizielemanlarininalacagienbuyukdeger;
dizimiz[5] = dizielemanlarininalacagienbuyukdeger;
dizimiz[6] = dizielemanlarininalacagienbuyukdeger;
dizimiz[7] = dizielemanlarininalacagienbuyukdeger;
dizimiz[8] = dizielemanlarininalacagienbuyukdeger;
dizimiz[9] = dizielemanlarininalacagienbuyukdeger;
}
else if (aktifolandizielemanı == 10)
{
dizimiz[0] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
dizimiz[1] = dizielemanlarininalacagienbuyukdeger;
dizimiz[2] = dizielemanlarininalacagienbuyukdeger;
dizimiz[3] = dizielemanlarininalacagienbuyukdeger;
dizimiz[4] = dizielemanlarininalacagienbuyukdeger;
dizimiz[5] = dizielemanlarininalacagienbuyukdeger;
dizimiz[6] = dizielemanlarininalacagienbuyukdeger;
dizimiz[7] = dizielemanlarininalacagienbuyukdeger;
dizimiz[8] = dizielemanlarininalacagienbuyukdeger;
dizimiz[9] = dizielemanlarininalacagienbuyukdeger;
}
}

Debug.WriteLine("Dizimin 0. elemanı = " + dizimiz[0]);// Sonuç 0
Debug.WriteLine("Dizimin 1. elemanı = " + dizimiz[1]);// Sonuç 0
Debug.WriteLine("Dizimin 2. elemanı = " + dizimiz[2]);// Sonuç 0
Debug.WriteLine("Dizimin 3. elemanı = " + dizimiz[3]);// Sonuç 0
Debug.WriteLine("Dizimin 4. elemanı = " + dizimiz[4]);// Sonuç 0
Debug.WriteLine("Dizimin 5. elemanı = " + dizimiz[5]);// Sonuç 0
Debug.WriteLine("Dizimin 6. elemanı = " + dizimiz[6]);// Sonuç 0
Debug.WriteLine("Dizimin 7. elemanı = " + dizimiz[7]);// Sonuç 500,0040
Debug.WriteLine("Dizimin 8. elemanı = " + dizimiz[8]);// Sonuç 999,9980
Debug.WriteLine("Dizimin 9. elemanı = " + dizimiz[9]);// Sonuç 999,9980

}





< Bu mesaj bu kişi tarafından değiştirildi fatih1978 -- 16 Ekim 2018; 14:43:32 >

I
6 yıl
Teğmen

Ne yapmaya çalıştığını anlatsaydın belki yardımcı olabilirdik. Yazdığın kodlardan hiçbirşey anlamadım.



< Bu ileti mobil sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
F
6 yıl
Yüzbaşı
Konu Sahibi

Paramın TL kısmı 2500
Paramın USD kısmı 7500 (yaklaşık)
Buna göre toplam param 10000 oluyor.

10000 / 10 = 1000 ***** Buda bana dizimdeki her bir elemanın alacağı maximum değeri veriyor.(Toplam param / dizimin eleman sayısı)
2500 / 1000 = 2,5 ***** 2,5 u yukarı yuvarlamam lazım ki bana 3 aktif yer açsın bende 1000 , 1000 , 500 diye ayırabileyim.

Şayet 1000 TL değerinde USD bozdurursam bu sefer
TL 3500
USD 6500
Toplam param yine aynı 10000
10000 / 10 = 1000 ***** değişmiyor
3500 / 1000 = 3,5 ***** 3,5 yukarı yuvarlamam lazım ki bana 4 aktif yer açsın bende bunu 1000 , 1000 , 1000 , 500 diye ayırabileyim

İnşallah anlatabilmişimdir.





< Bu mesaj bu kişi tarafından değiştirildi fatih1978 -- 16 Ekim 2018; 2:12:18 >


Bu mesajda bahsedilenler: @Iqtam
F
6 yıl
Yüzbaşı
Konu Sahibi

for (int i = dizimiz.Length; i > dizimiz.Length - aktifolandizielemanı; i--)
{
decimal kalan = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));


if (i == (dizimiz.Length - aktifolandizielemanı) + 1)
{
dizimiz[i - 1] = kalan;
}
else
{
dizimiz[i - 1] = dizielemanlarininalacagienbuyukdeger;
}
}





< Bu mesaj bu kişi tarafından değiştirildi fatih1978 -- 16 Ekim 2018; 14:48:34 >

I
6 yıl
Teğmen

 
for (int i = dizimiz.Length; i > dizimiz.Length - aktifolandizielemanı; i--)
{
for (int y = (dizimiz.Length - aktifolandizielemanı) ; y < dizimiz.Length; y++)
{
if (aktifolandizielemanı == y)
{
dizimiz[y] = elimdeki_TL - (dizielemanlarininalacagienbuyukdeger * (aktifolandizielemanı - 1));
}
}
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.