C++ alıştırmaları
Dizgi, kapsayıcı, sınıf ve algoritma problemlerini çözerek C++ becerini pekiştirir, her çözümü otomatik denetleyici ve sanitizer ile sınarsın.
Seviye 201 · 18 ders · 15 pratik lab
Dersler
Temel alıştırmalar
- Alıştırma: dizgi işleme bulmacaları
- Alıştırma: vector ile diziler
- Alıştırma: map ile sayma ve gruplama
- Alıştırma: özyineleme
- Alıştırma: matris sınıfı
- Kısa görev: karışık temel set
Sınıf ve bellek
- Alıştırma: değişmezlerini koruyan hesap sınıfı
- Alıştırma: sanal işlevlerle şekiller
- Alıştırma: RAII dosya sarmalayıcı
- Alıştırma: ham işaretçiyi akıllı işaretçiye çevir
- Alıştırma: sanitizer’ın yakaladığı hataları düzelt
- Kısa görev: sınıf tasarımı seti
Algoritma ve araç
- Alıştırma: LRU önbellek
- Alıştırma: ifade ayrıştırıcı ve hesaplayıcı
- Alıştırma: en kısa yol (Dijkstra)
- Alıştırma: iki dosyanın farkı
- Kısa görev: süre sınırlı algoritma seti
Bitirme
- Bitirme görevi: otomatik denetleyiciden geçen beş C++ problemi
Pratik lablar
- Harfleri kaydırarak kodlamak: Harfleri verilen miktarda kaydıran, alfabe sonunda başa dönen ve harf olmayanlara dokunmayan fonksiyonu yaz.
- Vektörü yerinde döndürmek: Vektörü ek bellek kullanmadan k adım sağa döndür; k'nin boyuttan büyük ve sıfır olduğu durumları da geç.
- Tekrarsız en uzun alt dizgiyi bulmak: Kayan pencere ile tekrar eden karakter içermeyen en uzun alt dizgiyi doğrusal sürede bul ve büyük girdilerde süre sınırını geç.
- Anagramları map ile gruplamak: Sözcük listesindeki anagramları sıralı harf anahtarıyla map'te grupla ve grupları boyuta göre sıralı döndür.
- Izgaradaki bölgeleri özyinelemeyle saymak: İki boyutlu küçük bir ızgarada birbirine komşu dolu hücrelerden oluşan bölgeleri özyinelemeyle say.
- Matris sınıfına güvenli çarpma eklemek: Tek vektör üzerinde saklanan matris sınıfına boyut denetimli çarpma ve devrik alma ekle; uyumsuz boyutta istisna ver ve rastgele testleri geç.
- Kesir sınıfını sadeleşmiş tutmak: Kesir sınıfında payda sıfırını reddet, işareti payda dışına al ve her işlemden sonra sadeleştir.
- Stok ayırma ve bırakmada tutarlılığı korumak: Ayrılan miktarın eldekini aşmasına izin veren stok sınıfında değişmezleri tanımla, ihlalde istisna ver ve durumun bozulmadığını test et.
- Çakışan rezervasyonu reddeden takvim sınıfı: Mercanköşk Otelcilik'in salon takviminde çakışan rezervasyonu logaritmik sürede reddeden sınıfı yaz ve iptal sonrası değişmezlerin korunduğunu göster.
- Ham diziyi vektöre çevirmek: new[] ile ayrılıp delete ile silinen diziyi std::vector'e çevir ve sanitizer çıktısının temizlendiğini göster.
- Kilit dosyasını RAII ile yönetmek: Erken dönüş ve istisna yollarında kilit dosyasını bırakan aracı yıkıcıda silen bir koruyucu sınıfla düzelt.
- Sanitizer'ın yakaladığı üç hatayı onarmak: Küçük bir metin işleme aracında ASan ve UBSan'ın bildirdiği sınır aşımı, sarkan başvuru ve işaretli taşma hatalarını tek tek bul ve onar.
- Hedef toplamı veren çifti bulmak: Tutarı hedefe eşit olan iki işlemi unordered_map ile tek geçişte bul ve indislerini döndür.
- Süre sonlu önbellek yazmak: Girdilerin belirli süre sonra düştüğü ve kapasite dolunca en eski girdinin atıldığı önbelleği sahte saatle test edilebilir yaz.
- Depo ızgarasında en kısa rotayı bulmak: Ağırlıklı geçişleri olan depo ızgarasında öncelik kuyruğuyla en kısa rotayı ve maliyetini bul; ulaşılamayan hedefi bildir ve süre sınırını geç.
Kurs hakkında
Dizgi, kapsayıcı, sınıf ve algoritma problemlerini çözerek C++ becerini pekiştirir, her çözümü otomatik denetleyici ve sanitizer ile sınarsın.
Ne öğreneceksin
- Temel alıştırmalar
- Sınıf ve bellek
- Algoritma ve araç
- Bitirme
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 201 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.