Uputstvo
Uneti broj patika n , a zatim uneti nazive patika i cene i staviti u mapu gde je naziv patika kljuc, a cena vrednost.
Kreirati vektora parova (model, cena) iz mape
Koristi sort funkciju za sortiranje iz zaglavlja
Napraviti funkciju za poređenje dva elementa koja trebaju biti upoređena tako da se vrati veća vrednost, da bi se sortiralo po opadajućem redosledu. Koristiti naziv ove funkcije kao treći parametar u funkciji sort
Ispisati sortirane vrednosti vektora parova ključ - vrednost gde je ključ naziv, a vrednost cena obuće.
Rešenje (C++)
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;
// Poređenje: skuplje patike prve; ako su cene iste – po imenu (abecedno)
bool poredi(pair<string, int> a, pair<string, int> b)
{
if (a.second != b.second)
return a.second > b.second;
return a.first < b.first;
}
int main()
{
int n;
cout << "Unesite broj modela patika: ";
cin >> n;
map<string, int> patike; // model -> cena
for (int i = 0; i < n; ++i)
{
string model;
int cena;
cout << "Unesite model patike i cenu: ";
cin >> model >> cena;
patike[model] = cena;
}
// Mapa je uređena po imenu; za sortiranje po ceni prepisujemo je u vektor parova
vector<pair<string, int>> v(patike.begin(), patike.end());
sort(v.begin(), v.end(), poredi);
cout << "\nNazivi patika i cene od najskupljih ka najjeftinijim:\n";
for (auto& p : v)
cout << p.first << " " << p.second << endl;
return 0;
}