Sesli harf sayacı
- Rust kursu
- Başlangıç
- Ders 112/115
- 7 dk
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
fn main() {
// buraya yaz
}Örnek çözüm
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>_ => {}</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
fn say(s: &str) -> ____ {
// ...
(sesli, sessiz)
}
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 |