Menu
Coddy logo textTech

Map Değer Arama

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

challenge icon

Görev

Kolay

Bir map içindeki belirli bir değerle ilişkili tüm anahtarları bulmak için ters arama sistemi uygulayan bir program oluşturun. Bu zorluk, anahtar-değer çiftleri arasında verimli bir şekilde arama yapmak için map iterasyonu, değer karşılaştırması ve vektör oluşturma yeteneklerinizi test edecektir.

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

  • Map'e eklenecek anahtar-değer çiftlerinin sayısını temsil eden bir tam sayı n
  • Ardından her biri şunlardan oluşan n çift girdi:
    • Anahtarı temsil eden bir string key
    • Değeri temsil eden bir tam sayı value
  • Aranacak değeri temsil eden bir tam sayı targetValue

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

  1. Parametre olarak bir std::map<std::string, int> ve bir tam sayı alan findKeysWithValue adında bir fonksiyon oluşturun
  2. Fonksiyon, belirtilen değere sahip tüm anahtarları içeren bir std::vector<std::string> döndürmelidir
  3. Ana fonksiyonda (main function), bir map oluşturun ve onu girdi anahtar-değer çiftleriyle doldurun
  4. Map ve hedef değer ile findKeysWithValue fonksiyonunu çağırın
  5. Önce eşleşen anahtarların sayısını yazdırın, ardından her bir eşleşen anahtarı ayrı bir satıra yazdırın

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

İlk satır - eşleşen anahtarların sayısı:

Keys found: [number_of_matching_keys]

Ardından her bir eşleşen anahtar ayrı satırlarda:

[matching_key_1]
[matching_key_2]
...

Hedef değere sahip hiçbir anahtar yoksa, sadece şunu yazdırın:

Keys found: 0

findKeysWithValue fonksiyonunuzun yeni bir boş vektör oluşturması, aralık tabanlı bir for döngüsü (range-based for loop) kullanarak map üzerinde gezinmesi ve her bir çiftin değerini hedefe karşı kontrol etmek için bir if ifadesi kullanması gerektiğini unutmayın. Bir eşleşme bulunduğunda, anahtarı (pair.first üzerinden erişilen) push_back() kullanarak sonuç vektörüne ekleyin. Fonksiyon, tüm eşleşen anahtarları içeren vektörü döndürmelidir.

Kendin dene

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

// YAPILACAK: findKeysWithValue fonksiyonunuzu buraya yazın

int main() {
    // Anahtar-değer çifti sayısını oku
    int n;
    cin >> n;
    
    // Anahtar-değer çiftlerini saklamak için map oluştur
    map<string, int> keyValueMap;
    
    // n adet anahtar-değer çiftini oku
    for (int i = 0; i < n; i++) {
        string key;
        int value;
        cin >> key >> value;
        keyValueMap[key] = value;
    }
    
    // Aranacak hedef değeri oku
    int targetValue;
    cin >> targetValue;
    
    // YAPILACAK: findKeysWithValue fonksiyonunuzu çağırın ve sonucu saklayın
    
    // YAPILACAK: Sonuçları istenen formatta yazdırın
    // Önce "Keys found: [count]" yazdırın
    // Ardından eşleşen her anahtarı ayrı satırlarda yazdırın
    
    return 0;
}

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