D.ershane Çözümleri Ddili.org

enum Çözümleri

  1. Açıklamaları kodun içine yerleştirdim:
  2. import std.stdio;
    import std.conv;
    
    enum İşlem { Çık, Toplama, Çıkarma, Çarpma, Bölme }
    
    void main()
    {
        // Seçenekleri yazdırıyoruz
        for (İşlem işlem; işlem <= İşlem.max; ++işlem) {
            write(işlem, ": ", to!string(işlem), "  ");
        }
    
        while (true) {
            write("İşlem? ");
    
            // Girişten yine de int olarak okumak zorundayız
            int işlemKodu;
            readf(" %s", &işlemKodu);
    
            /*
              Bu noktadan sonra sihirli sabitler yerine enum
              değerler kullanacağız.
    
              Girişten int olarak okuduğumuz için, bu int değerin
              türünü İşlem'e dönüştürüyoruz
    
              (Bu konuyu daha sonraki bir derste göreceğiz.)
            */
            İşlem işlem = cast(İşlem)işlemKodu;
    
            if (işlem == İşlem.Çık) {
                writeln("Güle güle!");
                break;
            }
    
            double birinci;
            double ikinci;
            double sonuç;
    
            if ((işlem < İşlem.min) || (işlem > İşlem.max)) {
                writeln("HATA: Geçersiz işlem");
                continue;
            }
    
            write("Birinci sayı? ");
            readf(" %s", &birinci);
    
            write(" İkinci sayı? ");
            readf(" %s", &ikinci);
    
            switch (işlem) {
            case İşlem.Toplama:
                sonuç = birinci + ikinci;
                break;
    
            case İşlem.Çıkarma:
                sonuç = birinci - ikinci;
                break;
    
            case İşlem.Çarpma:
                sonuç = birinci * ikinci;
                break;
    
            case İşlem.Bölme:
                sonuç = birinci / ikinci;
                break;
    
            default:
                throw new Exception(
                    "HATA: Programda bir hata var;"
                    "buraya hiç gelmemeliydik");
            }
    
            writeln("       Sonuç: ", sonuç);
        }
    }