Rangkuman: Frekuensi Kata
Termasuk bagian Pemrograman Berorientasi Object dalam perjalanan C++ di Coddy. Pelajaran 75 dari 104.
Tantangan
MudahMari 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 classWordAnalyzeryang 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 diberikangetCount(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 menggunakanstd::sortdengan lambda yang membandingkan jumlah terlebih dahulu (menurun), lalu kata (menaik) jika jumlahnya sama.main.cpp: Baca bilangan bulatnpada baris pertama yang menunjukkan jumlah kata yang akan dibaca. Lalu bacankata, satu kata per baris.Buat
WordAnalyzer, tambahkan semua kata, lalu tampilkan:- Cetak
Total words: <count> - Cetak
Unique words: <count> - Cetak
Word frequencies:, lalu panggilprintByFrequency()
- Cetak
Misalnya, dengan input:
7
apple
banana
apple
cherry
banana
apple
dateOutput-nya seharusnya:
Total words: 7
Unique words: 4
Word frequencies:
apple: 3
banana: 2
cherry: 1
date: 1Perhatikan 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
theOutput:
Total words: 5
Unique words: 3
Word frequencies:
the: 3
cat: 1
sat: 1Coba 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
1Dasar-Dasar OOP
File EksternalBuild dan Kompilasi C++File Header dan File SourceNamespace dan CakupanPengantar OOP dalam C++class vs objectPointer 'this'method (Fungsi Anggota)Atribut (Anggota Data)Dasar Ctor dan DtorRingkasan: Kalkulator Sederhana4Properti class
Anggota instance vs staticGetter dan setterFungsi anggota constKata kunci mutableMethod dan variabel staticFungsi dan class friendRangkuman, Pengelola Rekening Bank7Pewarisan
Pewarisan DasarTingkat Akses pada PewarisanUrutan Pemanggilan Ctor & DtorPenimpaan methodFungsi Virtual & VTablePewarisan BergandaPewarisan VirtualRangkuman: Hierarki Karyawan10Gambaran Umum STL
Gambaran Umum dan Filosofi STLKontainer STLIteratorAlgoritma STLFunctor dan Ekspresi LambdaRangkuman: Frekuensi Kata2Manajemen Memori
Memori Stack vs HeapPointer dan ReferenceMemori Dinamis (new/delete)Smart Pointer di C++RAII di C++Rangkuman: Pengelola Array Dinamis5Enkapsulasi
Penentu Akses dalam C++Penentu Akses secara MendalamPenyembunyian Informasistruct vs classNested dan Inner classRangkuman, Sistem Catatan Siswa8Polimorfisme
Polimorfisme saat Compile vs RuntimeOverloading FungsiMeninjau Kembali Fungsi VirtualFungsi Virtual MurniKelas AbstrakDesain Interface di C++Casting Dinamis & RTTIRangkuman: Kalkulator Bentuk3Konstruktor & Destruktor
Konstruktor DefaultKonstruktor BerparameterKonstruktor SalinKonstruktor PindahDaftar Inisialisasi KonstruktorKonstruktor DelegasiKupas Tuntas DestruktorAturan Tiga, Lima, dan NolRangkuman: class String6Overloading Operator
Pengantar Overloading OperatorOverloading Operator AritmetikaOverloading Operator PerbandinganOperator StreamOverloading Operator PenugasanOverloading Operator [] dan ()Operator Konversi TipeRingkasan, class Matrix9Template
Template FungsiTemplate classSpesialisasi TemplateTemplate VariadikDasar SFINAE & Type TraitsRangkuman, Container GenerikLatihan sendiri: Compiler C++ online