Sözcük Sıklığı Sayacı
std::map kullanarak bir metin dosyasındaki her sözcüğün tekrar sayısını hesaplayın
Sözcük Sıklığı Sayacı, CoddyKit'te ücretsiz bir C++ Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C++ Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C++ Academy kursu toplamda 4 dersten oluşur.
Proje Amacı
Bir metin dosyasını okuyun ve her benzersiz kelimeyi görülme sayısıyla birlikte yazdırın. std::map veya std::unordered_map ile temizce çözülebilen klasik bir problem.
Gerekli Başlık Dosyaları
Dosya girdi/çıktısı, dizeler ve ilişkisel bir kapsayıcı için.
#include <fstream>
#include <map>
#include <string>
#include <iostream>Kelimeleri Birer Birer Okuma
>> çıkarma işleci, boşluklarla ayrılmış belirteçleri okur; ham kelimeler için idealdir.
std::ifstream file("book.txt");
std::map<std::string, int> counts;
std::string word;
while (file >> word) {
counts[word]++;
}Kelimeleri Normalleştirme
"Hello" ve "hello" sözcüklerinin aynı sayılması için her kelimeyi küçük harfe dönüştürün.
#include <algorithm>
std::transform(word.begin(), word.end(), word.begin(),
[](unsigned char c) { return std::tolower(c); });Noktalama İşaretlerini Kaldırma
Her kelimenin başındaki ve sonundaki noktalama işaretlerini kaldırın.
while (!word.empty() && !std::isalpha(word.front())) word.erase(0,1);
while (!word.empty() && !std::isalpha(word.back())) word.pop_back();Sayımları Yazdırma
Map üzerinde yineleyin ve her çifti yazdırın. std::map, anahtarları sıralı düzende dolaşır.
for (const auto& [w, n] : counts) {
std::cout << w << ": " << n << "\n";
}Sıklığa Göre Sıralama
Alfabetik sırada değil, sıklığa göre yazdırmak için girdileri bir vector içine kopyalayın ve sıralayın.
std::vector<std::pair<std::string, int>> entries(counts.begin(), counts.end());
std::sort(entries.begin(), entries.end(),
[](auto& a, auto& b) { return a.second > b.second; });En Yaygın İlk N Öğe
Sıralanmış vector içindeki yalnızca ilk 10 öğeyi (veya herhangi bir N öğesini) yazdırın.
for (size_t i = 0; i < 10 && i < entries.size(); ++i) {
std::cout << entries[i].first << ": " << entries[i].second << "\n";
}map ve unordered_map Karşılaştırması
Büyük dosyalar için std::unordered_map ortalama olarak daha hızlıdır (O(1) arama), ancak öğeleri rastgele bir sırada dolaşır. Sıralı çıktı için std::map kullanın.
Yoksayılacak Kelimeler
Bir yoksayılacak kelimeler kümesi kullanarak "bir", "ve", "ile" gibi yaygın kısa kelimeleri filtreleyin.
static const std::set<std::string> stop = {"the","and","of","to","a"};
if (stop.count(word)) continue;Satır veya Karakter Sayma
Aynı kalıbın farklı biçimleri: std::getline ile toplam satırları, std::ifstream + std::istreambuf_iterator ile toplam karakterleri sayın.
Performans Hususları
Çok büyük dosyalar için anahtar olarak unordered_map ile string_view kullanın, dosyayı mmap ile belleğe eşleyin ve kelime başına yığın ayırmaktan kaçının.
Kısa Sınama
Hangi kapsayıcı otomatik olarak alfabetik sırada dolaşır?
Özet
Kelime sıklığı sayacı, akışları, dizeleri, ilişkisel kapsayıcıları ve algoritmaları bir araya getirir. Sıralı çıktı için map, hız için unordered_map seçin. Daha temiz sonuçlar için normalleştirme yapın, noktalama işaretlerini kaldırın ve yoksayılacak kelimeleri değerlendirin.
Yapay zeka eğitmeniyle C++ öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 51
- Dersler
- 203
Sıkça Sorulan Sorular
“Sözcük Sıklığı Sayacı” dersi ücretsiz mi?
Evet — “Sözcük Sıklığı Sayacı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C++ Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C++ Academy kursu toplamda 4 dersten oluşur.
“Sözcük Sıklığı Sayacı” dersinde ne öğreneceğim?
std::map kullanarak bir metin dosyasındaki her sözcüğün tekrar sayısını hesaplayın C++ Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C++ Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C++ Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Sözcük Sıklığı Sayacı” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C++ Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C++ Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Basit Bir CLI Hesap Makinesi Oluşturma
- CSV Dosyalarını Okuma ve Yazma
- Sayı Tahmin Oyunu
- Sözcük Sıklığı Sayacı