Menu
Coddy logo textTech

Map Üzerinde Yineleme

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 28 / 56.

Artık bir haritadaki öğeleri nasıl oluşturacağınızı, değiştireceğinizi ve kaldıracağınızı bildiğinize göre, haritanızdaki tüm anahtar-değer çiftleri arasında nasıl dolaşacağınızı öğrenelim. Aralık tabanlı for döngüsü, bir std::map içindeki her öğe üzerinde yineleme yapmak için zarif bir yol sunar.

Bir map üzerinde yineleme yapmak için temel sözdizimi şöyledir:

for (auto pair : myMap) {
    // Anahtara pair.first ile erişin
    // Değere pair.second ile erişin
}

Döngüdeki her öğe, iki önemli üye içeren bir çift nesnesidir: first anahtarı, second ise değeri tutar. İşte pratik bir örnek:

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;
}

Bu, her öğrencinin adını ve ardından puanını yazdıracaktır. auto anahtar kelimesi, her çift için doğru türü otomatik olarak belirleyerek kodunuzu daha temiz ve okunması daha kolay hale getirir.

challenge icon

Görev

Kolay

std::map kullanarak bir restoran menü sistemini yöneten bir program oluşturun. Programınız menü öğelerini ve fiyatlarını depolayacak, ardından tüm anahtar-değer çiftleri üzerinde yineleme yaparak menünün tamamını görüntüleyecektir.

Aşağıdaki girdiler sağlanacaktır:

  • Menü öğelerinin sayısını temsil eden bir n tamsayısı
  • Ardından n adet girdi çifti:
    • Yemeğin adını temsil eden bir dize
    • Yemeğin fiyatını temsil eden bir double

Programınız şunları yapmalıdır:

  1. std::map<std::string, double> türünde menu adlı bir değişken oluşturun
  2. Menü öğelerinin sayısını okuyun
  3. Her menü öğesi için yemek adını ve fiyatını okuyun, ardından köşeli parantez gösterimini kullanarak bunları map'e ekleyin
  4. Tüm map üzerinde yineleme yapmak ve her yemeği fiyatıyla yazdırmak için aralık tabanlı bir for döngüsü kullanın
  5. Menüdeki toplam öğe sayısını hesaplayıp yazdırın

Aşağıdaki tam çıktı biçimini kullanın:

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

Menü öğeleri, map üzerinde yineleme yapılırken göründükleri sırayla (yemek adına göre alfabetik sırada) yazdırılmalıdır. Map üzerinde yineleme yapmak için auto pair : menu kullanan bir aralık tabanlı for döngüsü kullanın; her anahtar-değer çiftine yemek adı için pair.first ve fiyat için pair.second ile erişin. Her fiyatı std::fixed ve std::setprecision(2) kullanarak tam olarak 2 ondalık basamakla yazdırın.

Kendin dene

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

int main() {
    // Menü öğelerinin sayısını oku
    int n;
    cin >> n;
    
    // Menü haritasını (map) oluştur
    map<string, double> menu;
    
    // Menü öğelerini ve fiyatlarını oku
    for (int i = 0; i < n; i++) {
        string dish;
        double price;
        cin >> dish >> price;
        // YAPILACAK: Yemeği ve fiyatı menü haritasına ekle
    }
    
    // YAPILACAK: "Restaurant Menu:" başlığını yazdır
    
    // YAPILACAK: Menüde gezinmek ve her öğeyi yazdırmak için aralık tabanlı for döngüsü kullan
    // Format: [dish]: $[price] (2 ondalık basamak ile)
    
    // YAPILACAK: Toplam menü öğesi sayısını yazdır
    
    return 0;
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C++ derleyicisi