Wpis z mikrobloga

#programowanie #cpp #informatyka

Dostalem taki program do napisania w ramach cwiczen domowych:

Stolarz ma sklad z trzema rodzajami desek. Wszystkie maja taka sama szerokosc, ale rozne dlugosci. Sprzedajac deske pewnej okreslonej dlugosci, jezeli jest ona inna od tej podanej przez użytkownika, nalezy odciac od poprzedniej deski. By odpadki nie byly za duze, trzeba do tego wybrac najkrotsza deske (program powinien wskazywac najkrotsza mozlwia deske automatycznie), powinien tez zawierac funkcje wyrzucenia odpakdkow (usuniecie wszystkich desek rozniacych sie dlugoscia od tej zadelkarowanej przez uzytkonika.

Pojecia nie mam jak sie do tego zabrac. Podpowie ktos cokolwiek? Myslicie, ze dlugosci i rodzaje desek nalezy zpisac w matrycy?
  • 10
Ja bym raczej zrobił sobie posortowany zbiór (

multiset
) desek, gdzie kluczem jest jej długość. Po kaƶdym odcięciu zastępujesz długość wartością odciętą. W ramach czyszczenia zostawiasz tylko trzy dozwolone klucze.
@erwit: Jak chcesz najkrótszą możliwą deskę od razu automatycznie mieć dostępną to użyj kolejki priorytetowej (

priority_queue
), jest to kopiec czyli zawsze na jego szczycie będziesz mieć najmniejszą/największą wartość (zależnie od tego jak wolisz).
@KrzaQ2: Ja nigdy nie byłem dobry w oczytywaniu tego #!$%@? którym usilnie raczą nas twórcy wszelakich zadań informatycznych (serio, bez ironii, zawsze pełno czasu spędzałem rozszyfrowując o co autorowi chodzi, samo kodzenie ypotem to już pryszcz ;P) no i jak tak widzę, że interesuje nas zawsze najkrótsza deska to nie widziałem potrzeby stosowania czgoś innego niż kopca.
@Marmite: @KrzaQ2: Po pierwsze potrzebuje, stworzyc trzy funckcje

1. Sprawdzanie

2. Powracanie do stanu pierwotnego (czyszczenie magazynu z odpadkow)

3. Kupowianie/sprzedawanie, czyli zmienianie wartosci tablic

O czyms zapomnielem?

W jaki sposob ustawic, liczbe desek i ich dlugosc? Co zrobic, by ilosc mogla byc zmieniana przez uzytkownika w trakcie dzialania programu?
@erwit: Nie potrzebujesz ƶadnych tablic :P

Rozwiązać moƶesz to na kilka sposobów, ale ja to bym zrobił tak:

multiset
- kontener trzymający dostępne deski (a raczej same ich długości)

Teraz tak:

1. Nie jestem pewien co chcesz sprawdzać.

Czy cokolwiek jest?

multiset::empty
Czy jest odpowiednio duƶa deska na stanie?

multiset::lower_bound(wielkość) != multiset::end()
2. Do stanu pierwotnego czy czyszczenie z odpadów?

Jak chcesz stan pierwotny, to po prostu skopiuj zmienną reprezentującą go