CodeBlanks Logo Icon CodeBlanks

Sesli harf sayacı

Bir string'deki sesli harfleri sayan programı yazarsın.

Bitirme görevi: sesli harf sayacı

Başlangıç seviyesinin son görevlerinde öğrendiklerini birleştireceksin. İlki: bir metindeki sesli ve sessiz harfleri saymak. Gerekenler: to_lowercase ile harfleri tek biçime getirmek, chars() ile dolaşmak, match ile sınıflandırmak:

match c {
    'a' | 'e' | 'ı' | 'i' | 'o' | 'ö' | 'u' | 'ü' => sesli += 1,
    c if c.is_alphabetic() => sessiz += 1,
    _ => {}   // boşluk, noktalama, rakam
}

Sonucu iki değer olarak döndürmek için tuple kullan: -> (usize, usize).

Tuple ile dönüş

Fonksiyon iki sayaç döndürür; çağıran tarafta tuple kalıbıyla açılır:

fn say(s: &str) -> (usize, usize) {
    let mut sesli = 0;
    let mut sessiz = 0;
    for c in s.to_lowercase().chars() {
        // match ...
    }
    (sesli, sessiz)
}

let (a, b) = say("Merhaba Dünya!");

to_lowercase() yeni bir String döndürür; dolaşma onun üzerinde yapılır.

Uygulama Harfleri say

fn say(s: &str) -> (usize, usize) fonksiyonunu yaz: küçük harfe çevrilmiş metindeki sesli (aeıioöuü) ve diğer alfabetik harfleri say. "Merhaba Dünya!" için sesli: 5, sessiz: 7 biçiminde yazdır.

Başlangıç kodu

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
fn say(s: &str) -> (usize, usize) {
    let mut sesli = 0;
    let mut sessiz = 0;
    for c in s.to_lowercase().chars() {
        match c {
            'a' | 'e' | 'ı' | 'i' | 'o' | 'ö' | 'u' | 'ü' => sesli += 1,
            c if c.is_alphabetic() => sessiz += 1,
            _ => {}
        }
    }
    (sesli, sessiz)
}

fn main() {
    let (a, b) = say("Merhaba Dünya!");
    println!("sesli: {}, sessiz: {}", a, b);
}

Beklenen çıktı

sesli: 5, sessiz: 7

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>_ =&gt; {}</code> kolu neden gerekli?

  • Performans için
  • Sesli harfleri saymak için
  • Gerekli değil
  • match kapsayıcı olmalı; harf olmayan karakterler de bir kola düşmeli Doğru cevap

Açıklama: char türünün olası her değeri bir kola uymalı; guard'lı kol kapsayıcılığı garanti etmez.

2 Tuple döndür

Soru
fn say(s: &str) -> ____ {
    // ...
    (sesli, sessiz)
}
Cevap
fn say(s: &str) -> (usize, usize) {
    // ...
    (sesli, sessiz)
}

Açıklama: İki değer döndürmek için (usize, usize) tuple türü kullanılır.

3 Karakter ve sınıfı

Kavram Anlamı
'ü' Sesli
'ğ' Sessiz
' ' Sayılmaz
'!' Yok sayılır

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma