Şimdi Ara

C# döngü içindeki if lerden kurtulmak istiyorum.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
521
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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 >







  • Ne yapmaya çalıştığını anlatsaydın belki yardımcı olabilirdik. Yazdığın kodlardan hiçbirşey anlamadım.
  • Iqtam I kullanıcısına yanıt
    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 >
  • 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 >
  •  
    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));
    }
    }
    }
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.