C# Switch-case ile sesli ve sessiz harfi ekrana yazdırma

  • Konuyu başlatan DarL
  • Başlangıç Tarihi
  • Mesaj 11
  • Görüntüleme 2.189

DarL

Femtopat
Katılım
28 Haziran 2023
Mesajlar
96
Daha fazla  
Cinsiyet
Erkek
Bilişim okuyorum ve ödev verildi.

1698864960812.png


Çok kolay olmasına rağmen yapamıyorum.
Nereyse 1 saattir kafa patlatıyorum ama ne sitelerde ne de kendim bulamadım. Tabii konuyla alakalı tek bulduğum bu fakat buradaki for/if/else ile yapmış benim Switch-case kullanarak yapmam isteniliyor.

1698865218195.png


Benim de son yaptığım olarak en son böyle bir şey ortaya çıktı.

1698865071101.png


1698865140194.png


İlk olarak gidişat yolunda nerede yanlış yapmışım ve nasıl yapabilirim?
 
Basit olsun dersen bunu kullan.
C#:
char karakter = 'a'; // Harf belirle.

if ((karakter >= 'A' && karakter <= 'Z') || (karakter >= 'a' && karakter <= 'z'))
{
    switch (char.ToUpper(karakter))
    {
        case 'A':
        case 'E':
        case 'I':
        case 'İ':
        case 'O':
        case 'Ö':
        case 'U':
        case 'Ü':
            Console.WriteLine("Girilen karakter bir sesli harftir.");
            break;
        default:
            Console.WriteLine("Girilen karakter bir sessiz harftir.");
            break;
    }
}
else
{
    Console.WriteLine("Girilen karakter geçersizdir.");
}

Daha dinamik olsun diyorsan bunu.
C#:
public enum HarfTuru
{
    Sesli,
    Sessiz,
    Gecersiz
}

public static HarfTuru HarfTurunuBelirle(char karakter)
{
    char buyukHarf = char.ToUpper(karakter);
  
    if (buyukHarf >= 'A' && buyukHarf <= 'Z')
    {
        if ("AEIOUÜİÖ".Contains(buyukHarf))
        {
            return HarfTuru.Sesli;
        }
        else
        {
            return HarfTuru.Sessiz;
        }
    }
    else
    {
        return HarfTuru.Gecersiz;
    }
}

public static void Main(string[] args)
{
    char karakter = 'a'; // Harfi belirle.

    HarfTuru harfTuru = HarfTurunuBelirle(karakter);

    switch (harfTuru)
    {
        case HarfTuru.Sesli:
            Console.WriteLine("Girilen karakter bir sesli harftir.");
            break;
        case HarfTuru.Sessiz:
            Console.WriteLine("Girilen karakter bir sessiz harftir.");
            break;
        case HarfTuru.Gecersiz:
            Console.WriteLine("Girilen karakter geçersizdir.");
            break;
    }
}
 
Son düzenleme:
Çok zorlamışsın. Geçersiz karakter seçimi için when kullansan, sessiz harfler içinde default kullansan çok daha kolay olurdu. Karakter yerine string kullanacaksan char'ı string yapsan yetiyor;
C#:
switch(karakter)
{
    case char ch when (ch < 'A' || ch > 'Z'):
        Console.WriteLine("Geçersiz karakter.");
        break;
    case char ch when (ch == 'A' || ch == 'E'
    || ch == 'I' || ch == 'İ'
    || ch == 'O' || ch == 'Ö'
    || ch == 'U' || ch == 'Ü'):
        Console.WriteLine("Sesli harf");
        break;
    default:
        Console.WriteLine("Sessiz harf");
        break;

}

Yada switchten önce bir tane if koyarsın yine aynı şeyi kontrol eden, eğer tetiklenirse fonksiyondan çıkarsın, böylece yine tüm sessiz harfleri yazmak zorunda kalmamış olursun.
Hocam ben arkadaş kodlamaya yeni başlamış o yüzden başlangıç seviyesinde kod yazdım daha iyisi derseniz buyrun aşağıda;


C#:
char karakter = 'A'; // karakterin A olduğunu varsayıp

var sonuc = karakter switch
{
    < 'A' or > 'Z' => "Geçersiz karakter.",
    'A' or 'E' or 'I' or 'İ' or 'O' or 'Ö' or 'U' or 'Ü' => "Sesli harf",
    _ => "Sessiz harf"
};

Console.WriteLine(sonuc);
 

Technopat Haberler

Geri
Yukarı