Menu
CoddyTech

Rangkuman: Frekuensi Kata

Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 75 dari 104.

challenge icon

Tantangan

Mudah

Mari kita buat Word Frequency Analyzer yang memproses teks dan menampilkan jumlah kata yang diurutkan berdasarkan frekuensi. Ini adalah tugas pemrosesan teks klasik yang menggabungkan semua komponen STL yang telah kamu pelajari: map untuk menghitung, vector untuk mengurutkan, iterator untuk penelusuran, dan lambda untuk logika pengurutan khusus.

Kamu akan menyusun kodemu dalam dua file:

  • WordAnalyzer.h: Definisikan class WordAnalyzer yang mengelola penghitungan dan analisis kata.

    Class-mu harus menggunakan std::map<std::string, int> secara internal untuk menyimpan jumlah kata. Implementasikan method berikut:

    • addWord(const std::string& word): menambah jumlah untuk kata yang diberikan
    • getCount(const std::string& word): mengembalikan jumlah untuk kata tertentu (0 jika tidak ditemukan)
    • getTotalWords(): mengembalikan jumlah total kata yang ditambahkan (jumlah dari semua hitungan)
    • getUniqueWords(): mengembalikan jumlah kata unik (ukuran map)
    • printByFrequency(): mencetak semua kata yang diurutkan berdasarkan frekuensi secara menurun. Untuk kata-kata dengan frekuensi yang sama, urutkan secara alfabetis. Setiap baris harus menampilkan: word: count

    Untuk printByFrequency(), kamu perlu memindahkan isi map ke vector berisi pasangan, lalu menggunakan std::sort dengan lambda yang membandingkan jumlah terlebih dahulu (menurun), lalu kata (menaik) jika jumlahnya sama.

  • main.cpp: Baca bilangan bulat n pada baris pertama yang menunjukkan jumlah kata yang akan dibaca. Lalu baca n kata, satu kata per baris.

    Buat WordAnalyzer, tambahkan semua kata, lalu tampilkan:

    1. Cetak Total words: <count>
    2. Cetak Unique words: <count>
    3. Cetak Word frequencies:, lalu panggil printByFrequency()

Misalnya, dengan input:

7
apple
banana
apple
cherry
banana
apple
date

Output-nya seharusnya:

Total words: 7
Unique words: 4
Word frequencies:
apple: 3
banana: 2
cherry: 1
date: 1

Perhatikan bahwa apple muncul pertama (frekuensi tertinggi), diikuti banana, lalu cherry dan date diurutkan secara alfabetis karena jumlahnya sama.

Contoh lain dengan input:

5
the
cat
the
sat
the

Output:

Total words: 5
Unique words: 3
Word frequencies:
the: 3
cat: 1
sat: 1

Coba sendiri

#include <iostream>
#include <string>
#include "WordAnalyzer.h"

using namespace std;

int main() {
    int n;
    cin >> n;
    
    WordAnalyzer analyzer;
    
    // TODO: Baca n kata dan tambahkan ke analyzer
    
    // TODO: Cetak "Total words: <count>"
    
    // TODO: Cetak "Unique words: <count>"
    
    // TODO: Cetak "Word frequencies:" dan panggil printByFrequency()
    
    return 0;
}

Semua pelajaran di Pemrograman Berorientasi Object

Latihan sendiri: Compiler C++ online