[c++] struktura - zliczanie


(Bamboleonn) #1

nie aktualne


(Fiołek) #2

Tworzysz std::map z kluczem jako string i wartością jako int. Przy wczytywaniu dodajesz do wartości wskazywanej przez auta_.marka jeden. Jak sobie to wypiszesz to już twoja działka :wink:_


(Marduk666pl) #3

Czyli dodajesz plik nagłówkowy "map"

#include

W funkcji main dodajesz:

map marki;


marki.insert(pair("bmw", 0));

marki.insert(pair("audi", 0));


//i tak dalej dla kazdej marki

A później tam gdzie masz pętle wczytującą dane, na jej końcu dopisujesz:

marki[auta[i].marka]++;

(Fiołek) #4

To nie jest potrzebne. operator[] dodaje element jeśli go nie ma w kolekcji. Co prawda mogą z tego tytułu wyniknąć problemy związane z domyślną wartością dla inta(VS: INT_MAX, GCC: bodaj 0), ale i to da się obejść(najpierw sprawdzenie czy obiekt istnieje, a potem dodanie jeśli nie istnieje, ew. utworzyć klasę udającą inta i inicjalizacja go w konstruktorze zerem).

Jeśli liczba marek się zmienia, to Twoje rozwiązanie nie sprawdziłoby się.