#include #include #include #include /* assert */ using namespace std; struct Oseba { string Ime; string Priimek; int IDUM; // 9-mestna unikatna številka void print(){ cout << Ime << " " << Priimek << " " << to_string(IDUM) << "\n"; } }; // prototipi void dobi_prvo_crko(Oseba, char &); void dobi_slovar_s_crko(map>, char, map &); void vstavi_osebo_v_slovar_oseb(map &, Oseba); void posodobi_slovar_oseb_v_slovarju(map> &, char, map); void napolni_slovar(Oseba [], int, map> &); void dobi_prvo_crko(Oseba oseba, char &prva_crka) { // TODO prva_crka = oseba.Priimek[0]; } void dobi_slovar_s_crko(map> slovar, char prva_crka, map &slovar_oseb) { // TODO slovar_oseb = slovar[prva_crka]; } void vstavi_osebo_v_slovar_oseb(map &slovar_oseb, Oseba os) { // TODO slovar_oseb.insert(std::pair(os.IDUM, os)); } void posodobi_slovar_oseb_v_slovarju(map> &slovar, char prva_crka, map slovar_oseb) { // TODO slovar[prva_crka].swap(slovar_oseb); } void napolni_slovar(Oseba seznam[], int N, map> &slovar) { for (int i = 0; i < N; i++) { // pridobimo prvo črko char prva_crka; dobi_prvo_crko(seznam[i], prva_crka); // pridobimo slovar oseb s prvo črko map slovar_oseb; dobi_slovar_s_crko(slovar, prva_crka, slovar_oseb); // vstavimo osebo v slovar vstavi_osebo_v_slovar_oseb(slovar_oseb, seznam[i]); // posodobi slovar posodobi_slovar_oseb_v_slovarju(slovar, prva_crka, slovar_oseb); } } int main() { Oseba seznam[] = { Oseba {"Jani", "Dugonik", 123456789 }, Oseba{"Nikola", "Petrov", 1002525225}, Oseba{"Nikollll", "Petttr", 1223625123}, Oseba{"Ozan", "Zef",1001234567}, Oseba{"Zan", "Burger", 1002345678}, Oseba{"Marko", "Novak", 1003456789} }; int N = sizeof(seznam) / sizeof(Oseba); map> slovar; napolni_slovar(seznam, N, slovar); map slovarOseb; Oseba tmp; for (auto it=slovar.begin(); it!=slovar.end(); ++it) { slovarOseb = it->second; cout << it->first << endl; for (auto at=slovarOseb.begin(); at!=slovarOseb.end(); ++at) { at->second.print(); } } return 0; }