c++ kolejka

shantiii
Użytkownik
Użytkownik
Posty: 13
Rejestracja: 25 kwie 2010, o 16:21
Płeć: Mężczyzna

c++ kolejka

Post autor: shantiii »

Nie mam pojecia jak to zrobic:
W pliku tekstowym"dane.txt" znajdują sie informacje o zadaniach do wykonania:
AAG05 8:00 200 10
WZK12 8:00 3000 15
BMX00 8:05 1000 30
...
W kolejnych liniach mamy:identyfikator zadania, czas wpłyniecia zadania (godzina i minuta),wartosc zadania, czas potrzebny na wykonanie zadania(w minutach). Zadania realizowane sa w miare ich napływania,zadanie o wyzszej artosci jest wykonane przed zadaniem o wartości niższej. Przeprowadz analize pracy w godzinach od 8;00 do 20:00 wyświetlajac kolejne wykonane zadania razem z czasem oczekiwania każdego zadania na realizację zadania, których nie udało sie zrealizowac, łaczny czas,w którym nie było zadan do wykonania.
Fragment wydruku końcowego:
Zadaania zrealizowane:
WZK12 CZAS OCZEKIWANIA: 0 MINUT
BMX00 CZAS OCZEKIWANIA: 10 MINUT
....
Awatar użytkownika
kadiii
Użytkownik
Użytkownik
Posty: 642
Rejestracja: 20 gru 2005, o 21:04
Płeć: Mężczyzna
Lokalizacja: Wrocław
Pomógł: 130 razy

c++ kolejka

Post autor: kadiii »

To jest zwyczajne sortowanie rekordów z danymi. Sortujesz po czasie wykonania. W przypadku tych samych czasów wybierasz ten o najwyższym priorytecie. Teraz musisz zaktualizować czasy realizacji wszystkich zadań(uzywamy dodatkowej zmiennej żeby pozostawić planowany czas do wyliczenia spóźnienia), których czas realizacji jest mniejszy lub równy czasowi realizacji danego zadania - zwiększasz je o czas realizacji danego zadania minus różnica czasu wykonania zadania wybranego a danego zadania. Przykład:
1.AAG05 8:00 200 10 WZK12 8:00 3000 15 - czas ten sam, więc bierzemy najwyższy priorytet
2.Aktualizujemy czasy realizacji pozostałych:
AAG05 8:00+15-(0)=8:15 200 10
BMX00 8:05+15-(5-0)=8:15 1000 30
3.AAG05 8:00 200 10 BMX00 8:05 1000 30 - jak wyżej
4.Aktualizujemy jak wyzej:
AAG05 8:15+30-(0-0)=8:45 200 10
5.Liczymy spóżnienia(czas ostatecznej realizacji - planowany czas realizacji)
WZK12 8:00-8:00=0
BMX00 8:15-8:05=10
AAG05 8:45-8:00=45
ODPOWIEDZ