Menu
Coddy logo textTech

Wyszukiwanie wartości w mapie

Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 55 z 56.

challenge icon

Wyzwanie

Łatwy

Utwórz program implementujący system odwrotnego wyszukiwania, który znajduje wszystkie klucze powiązane z określoną wartością w mapie. To wyzwanie sprawdzi Twoją umiejętność łączenia iteracji po mapie, porównywania wartości i tworzenia wektora, aby efektywnie przeszukiwać pary klucz-wartość.

Podane zostaną następujące dane wejściowe:

  • Liczba całkowita n reprezentująca liczbę par klucz-wartość, które należy dodać do mapy
  • Następnie n par danych wejściowych, z których każda składa się z:
    • Ciągu znaków key reprezentującego klucz
    • Liczby całkowitej value reprezentującej wartość
  • Liczba całkowita targetValue reprezentująca wartość, której należy szukać

Twój program powinien:

  1. Utworzyć funkcję o nazwie findKeysWithValue, która przyjmuje jako parametry std::map<std::string, int> oraz liczbę całkowitą
  2. Funkcja powinna zwracać std::vector<std::string> zawierający wszystkie klucze o określonej wartości
  3. W funkcji main utworzyć mapę i wypełnić ją wejściowymi parami klucz-wartość
  4. Wywołać funkcję findKeysWithValue, przekazując jej mapę i wartość docelową
  5. Najpierw wypisać liczbę pasujących kluczy, a następnie każdy pasujący klucz w osobnym wierszu

Użyj następującego dokładnego formatu wyjściowego:

Pierwszy wiersz — liczba pasujących kluczy:

Keys found: [number_of_matching_keys]

Następnie każdy pasujący klucz w osobnym wierszu:

[matching_key_1]
[matching_key_2]
...

Jeśli żaden klucz nie ma wartości docelowej, wypisz tylko:

Keys found: 0

Pamiętaj, że funkcja findKeysWithValue powinna utworzyć nowy pusty wektor, iterować po mapie za pomocą pętli for opartej na zakresie i użyć instrukcji if, aby sprawdzić wartość każdej pary w porównaniu z wartością docelową. Po znalezieniu pasującej wartości dodaj klucz (dostępny przez pair.first) do wektora wynikowego za pomocą push_back(). Funkcja powinna zwrócić wektor zawierający wszystkie pasujące klucze.

Spróbuj swoich sił

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

// TODO: Napisz tutaj funkcję findKeysWithValue

int main() {
    // Wczytaj liczbę par klucz-wartość
    int n;
    cin >> n;
    
    // Utwórz mapę do przechowywania par klucz-wartość
    map<string, int> keyValueMap;
    
    // Wczytaj n par klucz-wartość
    for (int i = 0; i < n; i++) {
        string key;
        int value;
        cin >> key >> value;
        keyValueMap[key] = value;
    }
    
    // Wczytaj wartość docelową do wyszukania
    int targetValue;
    cin >> targetValue;
    
    // TODO: Wywołaj funkcję findKeysWithValue i zapisz wynik
    
    // TODO: Wypisz wyniki w wymaganym formacie
    // Najpierw wypisz "Keys found: [count]"
    // Następnie wypisz każdy pasujący klucz w osobnym wierszu
    
    return 0;
}

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator C++ online