Menu
CoddyTech

Pencarian Nilai Map

Termasuk bagian Logika dan Alur dalam perjalanan C++ di Coddy. Pelajaran 55 dari 56.

challenge icon

Tantangan

Mudah

Buat program yang menerapkan sistem pencarian terbalik untuk menemukan semua kunci yang terkait dengan nilai tertentu dalam map. Tantangan ini akan menguji kemampuanmu menggabungkan iterasi map, perbandingan nilai, dan penyusunan vector untuk mencari pasangan kunci-nilai secara efisien.

Input berikut akan diberikan:

  • Integer n yang mewakili jumlah pasangan kunci-nilai yang akan ditambahkan ke map
  • Kemudian n pasang input, yang masing-masing terdiri dari:
    • String key yang mewakili kunci
    • Integer value yang mewakili nilai
  • Integer targetValue yang mewakili nilai yang akan dicari

Programmu harus:

  1. Membuat fungsi bernama findKeysWithValue yang menerima std::map<std::string, int> dan integer sebagai parameter
  2. Fungsi tersebut harus mengembalikan std::vector<std::string> yang berisi semua kunci dengan nilai yang ditentukan
  3. Di fungsi main, membuat map dan mengisinya dengan pasangan kunci-nilai dari input
  4. Memanggil fungsi findKeysWithValue dengan map dan nilai target
  5. Mencetak jumlah kunci yang cocok terlebih dahulu, lalu mencetak setiap kunci yang cocok pada baris terpisah

Gunakan format output persis berikut:

Baris pertama, jumlah kunci yang cocok:

Keys found: [number_of_matching_keys]

Lalu setiap kunci yang cocok pada baris terpisah:

[matching_key_1]
[matching_key_2]
...

Jika tidak ada kunci yang memiliki nilai target, cetak hanya:

Keys found: 0

Ingat bahwa fungsi findKeysWithValue harus membuat vector kosong baru, melakukan iterasi pada map menggunakan for loop berbasis rentang, dan menggunakan pernyataan if untuk memeriksa nilai setiap pasangan terhadap target. Saat menemukan kecocokan, tambahkan kunci tersebut, yang diakses melalui pair.first, ke vector hasil menggunakan push_back(). Fungsi tersebut harus mengembalikan vector yang berisi semua kunci yang cocok.

Coba sendiri

#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;

// TODO: Tulis fungsi findKeysWithValue-mu di sini

int main() {
    // Baca jumlah pasangan kunci-nilai
    int n;
    cin >> n;
    
    // Buat map untuk menyimpan pasangan kunci-nilai
    map<string, int> keyValueMap;
    
    // Baca n pasangan kunci-nilai
    for (int i = 0; i < n; i++) {
        string key;
        int value;
        cin >> key >> value;
        keyValueMap[key] = value;
    }
    
    // Baca nilai target yang akan dicari
    int targetValue;
    cin >> targetValue;
    
    // TODO: Panggil fungsi findKeysWithValue-mu dan simpan hasilnya
    
    // TODO: Cetak hasilnya dalam format yang diminta
    // Pertama, cetak "Keys found: [count]"
    // Lalu, cetak setiap kunci yang cocok pada baris terpisah
    
    return 0;
}

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C++ online