Menu
CoddyTech

Melakukan Perulangan pada Map

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

Sekarang setelah kamu tahu cara membuat, mengubah, dan menghapus elemen dari map, mari pelajari cara menelusuri semua pasangan key-value di map-mu. for loop berbasis range menyediakan cara yang elegan untuk mengiterasi setiap elemen dalam std::map.

Berikut sintaks dasar untuk melakukan perulangan pada map:

for (auto pair : myMap) {
    // Akses kunci dengan pair.first
    // Akses nilai dengan pair.second
}

Setiap elemen dalam perulangan adalah object pasangan yang memiliki dua anggota penting: first menyimpan kunci, dan second menyimpan nilai. Berikut contoh praktis:

std::map<std::string, int> scores;
scores["Alice"] = 95;
scores["Bob"] = 87;
scores["Carol"] = 92;

for (auto pair : scores) {
    std::cout << pair.first << ": " << pair.second << std::endl;
}

Ini akan mencetak nama setiap siswa diikuti nilainya. Kata kunci auto secara otomatis menentukan tipe yang tepat untuk setiap pasangan, sehingga kodemu lebih rapi dan mudah dibaca.

challenge icon

Tantangan

Mudah

Buat program yang mengelola sistem menu restoran menggunakan std::map. Programmu akan menyimpan item menu beserta harganya, lalu menampilkan seluruh menu dengan melakukan iterasi melalui semua pasangan kunci-nilai.

Input berikut akan diberikan:

  • Bilangan bulat n yang menunjukkan jumlah item menu
  • Lalu n pasang input:
    • String yang menunjukkan nama hidangan
    • Nilai double yang menunjukkan harga hidangan

Programmu harus:

  1. Membuat std::map<std::string, double> bernama menu
  2. Membaca jumlah item menu
  3. Untuk setiap item menu, membaca nama hidangan dan harganya, lalu menambahkannya ke map menggunakan notasi kurung siku
  4. Menggunakan range-based for loop untuk melakukan iterasi melalui seluruh map dan mencetak setiap hidangan beserta harganya
  5. Menghitung dan mencetak jumlah total item dalam menu

Gunakan format output persis berikut:

Restaurant Menu:
[dish1]: $[price1]
[dish2]: $[price2]
[dish3]: $[price3]
...
Total menu items: [number of items]

Item menu harus dicetak sesuai urutannya saat melakukan iterasi melalui map, yaitu berdasarkan urutan alfabetis nama hidangan. Gunakan range-based for loop dengan auto pair : menu untuk melakukan iterasi melalui map, dengan mengakses setiap pasangan kunci-nilai menggunakan pair.first untuk nama hidangan dan pair.second untuk harganya. Cetak setiap harga dengan tepat 2 angka desimal menggunakan std::fixed dan std::setprecision(2).

Coba sendiri

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

int main() {
    // Baca jumlah item menu
    int n;
    cin >> n;
    
    // Buat map menu
    map<string, double> menu;
    
    // Baca item menu dan harganya
    for (int i = 0; i < n; i++) {
        string dish;
        double price;
        cin >> dish >> price;
        // TODO: Tambahkan dish dan price ke map menu
    }
    
    // TODO: Cetak judul "Restaurant Menu:"
    
    // TODO: Gunakan range-based for loop untuk menelusuri menu dan mencetak setiap item
    // Format: [dish]: $[price] dengan 2 angka di belakang koma
    
    // TODO: Cetak jumlah seluruh item menu
    
    return 0;
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler C++ online