VEKTORI I MAPE - PRIMERI

Zadaci na ovoj veb strani su odabrani da bi ste provežbali lekcije vektori u c++ i mape u c++.

Takođe su izdvojeni delovi težih zadataka koji da bi se rešili na najoptimalniji način zahtevaju upotrebu istih.

Teži zadaci su uglavnom zadaci sa pripreme za takmičenje:

Zadaci

1.Ispisivanje mape

Dati su podaci o platama radnika:
Petar Petrovic 55000 din
Steva Đurđev 100000 din
Milica Trajkovski 97000din


Kreirati mapu na osnovu ovih podataka o platama koja sadrži parove ključ-vrednost, tako da imena radnika budu ključ. Ispisati sve podatke na ekranu.

2.Nadprosečne ocene

Učitati broj učenika, a zatim  imena učenika kao i njihove prosečne ocene i smestiti ih u mapu podataka tako da imena učenika budu ključevi. Na izlazu ispisti tabelarno imena učenika u jednoj i njihov prosek u drugoj samo za one učenike čiji je prosek veći od proseka cele grupe.

Primer:
Ulaz
4
Pera Perić   4.45
Mika Mikić   2.89
Sara Matić   4.89
Nikola Terzić  3.90

Izlaz:
Pera Perić   4.45
Sara Matić   4.89

3.Ponuda patika

Patikarnica na stanju ima n različitih modela patika opisanih svojim imenom i cenom. Učitati n, a zatim učitati modele i cene patika u mapu podataka.
Ispisati nazive patika i cene od najskupljih ka najeftinijim. Ako je više patika sa istom cenom sortirati ih po leksikografskom redosledu.
​
Primer 1:
Broj modela patika: 3
Unesite model patike i cenu:
Nike 5000
Unesite model patike i cenu:
Adidas 4500
Unesite model patike i cenu:
Puma 4000

Izlaz:
Nike 5000
Adidas 4500
Puma 4000

Primer 2:
Broj modela patika: 4
Unesite model patike i cenu:
Converse 3000
Unesite model patike i cenu:
Vans 3500
Unesite model patike i cenu:
NewBalance 3200
Unesite model patike i cenu:
Reebok 3400

Izlaz:




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.

#include < iostream >
#include < map >
#include < vector >
#include < algorithm >

using namespace std;

// Funkcija za sortiranje parova po ceni i imenu ako su cene iste
bool compare(pair < string, int > a, pair< string , int > b) {
if (a.second != b.second) {
return a.second > b.second; // Sortiranje po ceni opadajuće
} else {
return a.first < b.first; // Sortiranje po imenu ako su cene iste
}
}

int main()
{
int n;
cout << "Unesite broj modela patika: ";
cin >> n;

// Mapa za čuvanje modela i cena patika
map patike;

// Učitavanje modela i cena patika u mapu
for (int i = 0; i < n; ++i) {
string model;
int cena;
cout << "Unesite model patike i cenu: ";
cin >> model >> cena;
patike[model] = cena;
}

// Kreiranje vektora parova (model, cena) iz mape
vector> vec(patike.begin(), patike.end());

// Sortiranje vektora koristeći custom funkciju za poređenje
sort(vec.begin(), vec.end(), compare);

// Ispis sortiranih modela i cena patika
cout << "\nNazivi patika i cene od najskupljih ka najjeftinijim:\n";
for (auto it = vec.begin(); it != vec.end(); ++it) {
cout << it->first << " " << it->second << endl;
}

return 0;
}

4.Fiskalni računi

TEKST ZADATKA: 
Poznati su svi fiskalni računi koje je izdala jedna prodavnica.  Sa svakog računa se može pročitati datum kada je taj račun izdat i iznos koji je naplaćen.
Napiši program koji određuje maksimalan dnevni pazar za tu prodavnicu.
Primer 1:

Ulaz
:
​Unesite broj fiskalnih racuna: 3
Unesite datum i iznos racuna 1 (format: DD.MM.GGGG): 01.05.2024 1500
Unesite datum i iznos racuna 2 (format: DD.MM.GGGG): 01.05.2024 2000
Unesite datum i iznos racuna 3 (format: DD.MM.GGGG): 02.05.2024 1800

Izlaz:
Maksimalan dnevni pazar: 3500 dinara, datum: 01.05.2024

Primer 2:

Ulaz:
Unesite broj fiskalnih racuna: 4
Unesite datum i iznos racuna 1 (format: DD.MM.GGGG): 03.05.2024 1200
Unesite datum i iznos racuna 2 (format: DD.MM.GGGG): 03.05.2024 1700
Unesite datum i iznos racuna 3 (format: DD.MM.GGGG): 04.05.2024 2200
Unesite datum i iznos racuna 4 (format: DD.MM.GGGG): 05.05.2024 2500

Izlaz:
​Maksimalan dnevni pazar: 2500 dinara, datum: 05.05.2024

Rešenje