Anonymní profil Kajo1354 – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Kajo1354 – Programujte.comAnonymní profil Kajo1354 – Programujte.com

 

Příspěvky odeslané z IP adresy 178.40.75.–

Kajo1354
C / C++ › Fronta - Simulace pošty
2. 3. 2012   #154240

#2 KIIV
no keby som to vedel naprogramovať nemohol by si mu tu nejaký postup napísať ako by som mal zacať alebo niečo bo ja som v tom programovaní amater ale chcel by sa sa to naučiť a pochopiť omu len ked neviem ani ako poriadne zacať

Kajo1354
C / C++ › Fronta - Simulace pošty
2. 3. 2012   #154237

Dobrý deň,

mám za úlohu jeden projekt a moc ho nechápem. môžete mi napísať ako danú problematiku vydíte vy a ako by som mal s projektom zacať poprípade aj nejaký ten kod by si ma zišiel. Dakujem

Simulace pošty

Problém

Na poště je N přepážek (např. N = 5), každá z nich je určena pro jiný typ transakcí. U každé přepážky je fronta pro libovolné množství zákazníků. Zákazník, který přijde na poštu, si zvolí typ transakce a postaví se do fronty u odpovídající přepážky. Doba strávená u přepážky je závislá na tom, kolik trans-akcí daného typu potřebuje zákazník realizovat - nejméně jednu transakci, nejvýše P transakcí (např. P = 3). Zpracování jedné transakce bez ohledu na její typ trvá jednu časovou jednotku. Pravidelně přicházejí noví zákazníci k překážkám (v jedné časové jednotce přijde na poštu právě jeden zákazník). Simulujte průběh zpracování front u přepážek pro M zákazníků pošty (např. M = 100).

Implementace

• Čísla N, M, P deklarujte jako globální konstanty.

• Každou přepážku reprezentujte frontou implementovanou pomocí ukazatelů. Fronta bude umět poskytnout první prvek. Nepoužívejte třídy (fronta bude reprezentována jako struktura).

• N přepážek reprezentujte polem délky N, prvky pole budou fronty.

• Prvek fronty implementujte jako strukturu, která bude obsahovat identifikaci zákazníka (číslo typu int) a počet požadovaných transakcí (číslo typu int).

• Průběh zpracování front u přepážek reprezentujte cyklem while, který bude ukončen, pokud bu-dou všechny fronty prázdné. V každém kroku cyklu (jedné časové jednotce) bude všem zákazní-kům, kteří jsou na řadě (první ve frontě), buď zpracována jedna transakce, nebo pokud nebude žádná transakce požadována (není co zpracovat), bude zákazník odebrán z fronty. Pokud celkový počet zákazníků vygenerovaných během simulace nedosáhl M, bude vygenerován další zákazník s náhodně vygenerovaným typem transakce (0 až N-1 tak, aby to odpovídalo některému indexu fronty v poli) a s náhodným počtem požadovaných transakcí (od 1 do P). Identifikátorem zákazní-ka je pořadí, ve kterém byl vygenerován (první zákazník bude mít identifikátor 1, poslední M). Zá-kazník se poté se zařadí do fronty pro odpovídající typ transakce.

Na výstupu zobrazte odděleny mezerou tyto operace:

• Vygenerování nového zákazníka ve formě G#1[F#2][#3], kde #1 je identifikace zákazníka a #2 je typ transakce (index fronty v poli) a #3 je počet požadovaných transakcí. Třetí zákazník pro druhý typ transakce se třemi požadavky bude vytisknut ve tvaru G3[F1][3].

• Vložení zákazníka do fronty ve formě V#1[F#2], kde #1 je identifikace zákazníka, #2 je index fron-ty v poli. Pokud bude vložen třetí zákazník do druhé fronty, bude na výstupu V3[F1].

• Zpracování jedné transakce zákazníka ve formě T#1[#2], kde #1 je identifikace zákazníka a #2 je počet zbývajících transakcí. Pokud zpracujeme jednu transakci třetímu zákazníkovi, bude na vý-stupu K3[2].

• Odebrání zákazníka z fronty ve tvaru O#1[F#2], kde #1 je identifikace zákazníka, #2 je index fronty v poli. Pokud bude odebrán třetí zákazník z druhé fronty, bude na výstupu O3[F1].

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý