D.ershane Çözümleri Ddili.org

İşlevler Çözümleri

  1.  
  2. import std.stdio;
    
    void menüyüGöster(string[] seçenekler, int ilkNumara)
    {
        foreach (i, seçenek; seçenekler) {
            writeln(' ', i + ilkNumara, ' ', seçenek);
        }
    }
    
    void main()
    {
        string[] seçenekler =
            [ "Siyah", "Kırmızı", "Yeşil", "Mavi", "Beyaz" ];
        menüyüGöster(seçenekler, 1);
    }
    
  3. Bu program çok farklı şekillerde ve hiç bu kadar işlev kullanmadan da yazılabilir. Ben biraz da kendimi eğlendirmek için böyle yazdım... :o)
  4. Mors kodu yalnızca ASCII karakterleri kullandığı için char türünü kullanmakta bir sakınca görmedim. Bu programın bir yetersizliği de yalnızca küçük harfleri tanıyor olmasıdır.

    import std.stdio;
    import std.string;
    
    string boşluk()
    {
        return ".";
    }
    
    string işaret()
    {
        return "=";
    }
    
    string dıt()
    {
        return işaret() ~ boşluk();
    }
    
    string dıııt()
    {
        return işaret() ~ işaret() ~ işaret() ~ boşluk();
    }
    
    string harfArası()
    {
        return boşluk() ~ boşluk();
    }
    
    string morsKarşılığı(char harf)
    {
        string[char] morsAlfabesi =
        [
            ' ' : boşluk() ~ boşluk(),
            'a' : dıt()   ~ dıııt(),
            'b' : dıııt() ~ dıt()   ~ dıt()   ~ dıt(),
            'c' : dıııt() ~ dıt()   ~ dıııt() ~ dıt(),
            'd' : dıııt() ~ dıt()   ~ dıt(),
            'e' : dıt(),
            'f' : dıt()   ~ dıt()   ~ dıııt() ~ dıt(),
            'g' : dıııt() ~ dıııt() ~ dıt(),
            'h' : dıt()   ~ dıt()   ~ dıt()   ~ dıt(),
            'i' : dıt()   ~ dıt(),
            'j' : dıt()   ~ dıııt() ~ dıııt() ~ dıııt(),
            'k' : dıııt() ~ dıt()   ~ dıııt(),
            'l' : dıt()   ~ dıııt() ~ dıt()   ~ dıt(),
            'm' : dıııt() ~ dıııt(),
            'n' : dıııt() ~ dıt(),
            'o' : dıııt() ~ dıııt() ~ dıııt(),
            'p' : dıt()   ~ dıııt() ~ dıııt() ~ dıt(),
            'q' : dıııt() ~ dıııt() ~ dıt()   ~ dıııt(),
            'r' : dıt()   ~ dıııt() ~ dıt(),
            's' : dıt()   ~ dıt()   ~ dıt(),
            't' : dıııt(),
            'u' : dıt()   ~ dıt()   ~ dıııt(),
            'v' : dıt()   ~ dıt()   ~ dıt()   ~ dıııt(),
            'w' : dıt()   ~ dıııt() ~ dıııt(),
            'x' : dıııt() ~ dıt()   ~ dıt()   ~ dıııt(),
            'y' : dıııt() ~ dıt()   ~ dıııt() ~ dıııt(),
            'z' : dıııt() ~ dıııt() ~ dıt()   ~ dıt(),
            '1' : dıt()   ~ dıııt() ~ dıııt() ~ dıııt() ~ dıııt(),
            '2' : dıt()   ~ dıt()   ~ dıııt() ~ dıııt() ~ dıııt(),
            '3' : dıt()   ~ dıt()   ~ dıt()   ~ dıııt() ~ dıııt(),
            '4' : dıt()   ~ dıt()   ~ dıt()   ~ dıt()   ~ dıııt(),
            '5' : dıt()   ~ dıt()   ~ dıt()   ~ dıt()   ~ dıt(),
            '6' : dıııt() ~ dıt()   ~ dıt()   ~ dıt()   ~ dıt(),
            '7' : dıııt() ~ dıııt() ~ dıt()   ~ dıt()   ~ dıt(),
            '8' : dıııt() ~ dıııt() ~ dıııt() ~ dıt()   ~ dıt(),
            '9' : dıııt() ~ dıııt() ~ dıııt() ~ dıııt() ~ dıt(),
            '0' : dıııt() ~ dıııt() ~ dıııt() ~ dıııt() ~ dıııt(),
        ];
    
        if (harf !in morsAlfabesi) {
            throw new Exception("Harf tanınmıyor: " ~ harf);
        }
    
        return morsAlfabesi[harf];
    }
    
    string dizgiyiMorsaÇevir(const char[] dizgi)
    {
        string sonuç;
    
        foreach (harf; dizgi) {
            sonuç ~= morsKarşılığı(harf);
            sonuç ~= harfArası();
        }
    
        return sonuç;
    }
    
    string dizgiOku(string mesaj)
    {
        write(mesaj, "? ");
        return chomp(readln());
    }
    
    void main()
    {
        writeln(
            dizgiyiMorsaÇevir(
                dizgiOku("Mors koduna çevrilecek dizgi")));
    }
    
  5. Programı nasıl değiştirmek istediğiniz size kalmış, ama bir kaç fikir: