POPRAW KOD LUB JEŚLI KTOŚ OGARNIA MOŻE GO ZMIENIĆ NA PROSTSZY zad 5.3 wyłącznie!!.
![POPRAW KOD LUB JEŚLI KTOŚ OGARNIA MOŻE GO ZMIENIĆ NA PROSTSZY Zad 53 Wyłącznie class=](https://pl-static.z-dn.net/files/d20/8e321bada7ccc055926d8b90ddb4f859.png)
Odpowiedź
Odpowiedź w załącznikach. Jak dla mnie to co napisałaś było zbyt przekombinowane abym z tego coś wycisnąć. Za to rozwiązałam wszystkie trzy zadania. :) Zwróć przy okazji uwagę na wymagania zadania. Na przykład proszono o napisanie, które zadanie...
Natomiast wzięłam z Twojego programu pomysł na czytanie w pętli do końca wiersza. Jest to inaczej niż zrobiłam w tym samym zadaniu
tak więc możesz zechcieć popatrzeć i porównać. Tam zamiast pętli while użyłam w tym przypadku naturalniejszej pętli for, ponieważ wiadomo iż jest dokładnie 12 miesięcy... :) Pisanie polskich liter też jest inaczej rozwiązane.
Trudno mi było pisać w ciemno. Jeśli mogłabyś, to poproszę wykonaj program w C++ (ostatni załącznik), który powie jaki kompilator i który standard języka. Dziękuję!
W każdym przypadku użyłam struktury danych, która była najbardziej odpowiednia do zadania.
Najlepiej pisanie byłoby zacząć od zadania 5.2. Widać, że prosta tablica asocjacyjna = słownik (ang. dictionary) jest najlepszym rozwiązaniem. W C++ taką strukturę danych inicjalizuje się przez map. Kluczem jest kod dzielnicy, a wartość jest wyliczana według warunków zadania. Nie musimy wiedzieć ile jest dzielnic...
Nieco trudniejsze jest zadanie 5.3, bo wartością musi być tablica zawierająca 12 elementów. W C++ można wstawić ją tylko pośrednio używając struct. Tak już po prostu jest. Potem jest praktycznie tak samo jak w zadaniu 5.2, tylko że nie sumuje się wartości miesięcznych. Znalezienie wartości największej najlepiej pozostawić na moment drukowania (wypisywania) wyniku.
Zarówno w przypadku 5.2 oraz 5.3 wprawdzie nie ma wymogu aby wynik wydrukować w jakimś porządku, jednak ładnie :) wygląda alfabetycznie kodami dzielnic, co jest efektem ubocznym tego, że map sortuje listę po każdym wstawieniu. Dodatkowo map ma jeszcze taką miłą właściwość, że jeśli jakiś klucz nie istnieje, to zostanie po prostu automagicznie wstawiony.
Doszłam teraz do zadania 5.1. Byłoby miło znowu użyć map, ponieważ lista byłaby automatycznie posortowana według kluczy, ale niestety klucze nie mogą się powtarzać... Na szczęście jest multimap w którym klucze mogą się powtarzać! Algorytmy zadań 5.2 oraz 5.3 to zwykła arytmetyka. Natomiast w 5.1 inicjalizuję listę 10 klientów używając zużycia wody zero (0). Mogłabym zapewne bardziej elegancko przypisać zużycie ujemne, ale to już następnym razem... Czytając kolejne wiersze pliku z danymi dodaję nowo wczytanego klienta jako jedenastą pozycję. Po dodaniu multimap sortuje listę. A ja następnie usuwam z listy element o najmniejszym kluczu.
Wyjaśnienie