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 haritadaki belirli bir değerle ilişkilendirilmiş tüm anahtarları bulmak için ters arama sistemi uygulayan bir program oluşturun. Bu meydan okuma, anahtar-değer çiftleri arasında verimli bir şekilde arama yapmak için harita üzerinde yineleme, değer karşılaştırma ve vektör oluşturma becerinizi test edecektir.

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

  • Haritaya eklenecek anahtar-değer çiftlerinin sayısını temsil eden bir tamsayı n
  • Ardından, her biri şunlardan oluşan n girdi çifti:
    • Anahtarı temsil eden bir dize key
    • Değeri temsil eden bir tamsayı value
  • Aranacak değeri temsil eden bir tamsayı targetValue

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

  1. Parametre olarak bir findKeysWithValue ve bir tamsayı alan std::map<std::string, int> adlı bir işlev oluşturun
  2. İşlev, belirtilen değere sahip tüm anahtarları içeren bir std::vector<std::string> döndürmelidir
  3. main işlevinde bir harita oluşturun ve bunu girdi anahtar-değer çiftleriyle doldurun
  4. findKeysWithValue işlevini harita ve hedef değer ile çağırın
  5. Önce eşleşen anahtarların sayısını, ardından her eşleşen anahtarı ayrı bir satırda yazdırın

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

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

Keys found: [number_of_matching_keys]

Ardından her eşleşen anahtarı ayrı satırlarda yazdırın:

[matching_key_1]
[matching_key_2]
...

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

Keys found: 0

findKeysWithValue işlevinizin yeni ve boş bir vektör oluşturması, aralık tabanlı bir for döngüsü kullanarak harita üzerinde yineleme yapması ve her çiftin değerini hedef değerle karşılaştırmak için bir if ifadesi kullanması gerektiğini unutmayın. Bir eşleşme bulunduğunda, anahtarı (pair.first aracılığıyla erişilir) push_back() kullanarak sonuç vektörüne ekleyin. İşlev, eşleşen tüm 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

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