ΠΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ Π°Π²ΡΠΎΠ²ΠΎΠΊΠ·Π°Π»Π°
Π Π°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Π°Π²ΡΠΎΠ²ΠΎΠΊΠ·Π°Π»Π°. ΠΠ»ΠΈΠ΅Π½ΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π½Π° Π°Π²ΡΠΎΠ²ΠΎΠΊΠ·Π°Π», Π²ΡΡΠ°ΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· ΠΊΠ°ΡΡΠΈΡΠΎΠ², Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠ½ΠΊΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΈ ΡΡ ΠΎΠ΄ΡΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΠΉΡΠΎΠ² ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π² ΡΠ΅ΠΌΠΏΠ΅ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈΠΌΠΈΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΡΠ»Π΅ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ Π°Π²ΡΠΎΠ²ΠΎΠΊΠ·Π°Π»Π° (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
- ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
- 1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
- 2. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- 2.1 ΠΠ»Π°ΡΡ «ΠΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅»
- 2.2 ΠΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- 2.3 ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΠΏΠ΅ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- 2.4 Π Π°Π±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- ΠΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Ρ. Π΅. ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π‘ΡΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎ-ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π² Π²ΠΈΠ΄Π΅ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠΎ-ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΡΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½Π° ΡΠ°Π±ΠΎΡΠ° Π°Π²ΡΠΎΠ²ΠΎΠΊΠ·Π°Π»Π°.
Π¦Π΅Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° — ΠΎΠ²Π»Π°Π΄Π΅ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ² ΠΈ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΉ ΠΈΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
1. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
Π Π°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Π°Π²ΡΠΎΠ²ΠΎΠΊΠ·Π°Π»Π°. ΠΠ»ΠΈΠ΅Π½ΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π½Π° Π°Π²ΡΠΎΠ²ΠΎΠΊΠ·Π°Π», Π²ΡΡΠ°ΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· ΠΊΠ°ΡΡΠΈΡΠΎΠ², Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠ½ΠΊΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΈ ΡΡ ΠΎΠ΄ΡΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΠΉΡΠΎΠ² ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π² ΡΠ΅ΠΌΠΏΠ΅ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΈΠΌΠΈΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΡΠ»Π΅ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ Π°Π²ΡΠΎΠ²ΠΎΠΊΠ·Π°Π»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠΎΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΌ ΡΠ°Π³ΠΎΠΌ. ΠΡΠ΅ΠΌΠ΅Π½Π° ΠΏΡΠΈΡ ΠΎΠ΄Π° ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π». ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π²Π²ΠΎΠ΄ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΡΡΠΎΡΠ° ΠΏΡΠΈΡ ΠΎΠ΄Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²).
2. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
2.1 ΠΠ»Π°ΡΡ «ΠΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅»
Π Ρ ΠΎΠ΄Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Time ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° Simulation. Π ΡΠΈΠΊΠ»Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π΅ΡΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π΅ΡΡΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π° Π² ΠΆΡΡΠ½Π°Π» ΡΠΎΠ±ΡΡΠΈΠΉ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ.
ΠΠ»Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ ΡΠΈΡΠ΅Π», ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΊΠ»Π°ΡΡΠ° Simulation. Π€ΡΠ½ΠΊΡΠΈΡ-ΡΠ»Π΅ΠΌΠ΅Π½Ρ Client_arrival (curr, num) ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π₯ ΠΈΠ· ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° [0, num] Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° Random, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠΈΡΠ»ΠΎ ΠΌΠΈΠ½ΡΡ (Π₯ + 1) ΠΏΡΠΈΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ curr. Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠ»ΠΈΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° client, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°ΠΊΡΡΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅-ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
Π°rrive — Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
service_time — Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π½Π° ΠΊΠ°ΡΡΠ΅
departure_timeΠ²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅ΠΉΡΠ°
clientIDΠ½ΠΎΠΌΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
destination — ΠΌΠ΅ΡΡΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΠΎΡΠ»Π΅ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΡΠΈΠΊΠ»Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ΄Π΅Ρ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠ»Π°ΡΡΠ° client, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ, Π½ΠΎΠΌΠ΅Ρ, Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π½Π° ΠΊΠ°ΡΡΠ΅ ΠΈ ΠΌΠ΅ΡΡΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° Random. ΠΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ΄Π°ΠΆΠ΅ Π±ΠΈΠ»Π΅ΡΠ°. ΠΠΎΡΠ»Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² Π½ΡΠΆΠ½ΡΡ ΠΊΠ°ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΌΠ΅ΡΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π ΠΊΠ»Π°ΡΡΠ΅
Simulation Ρ ΡΠ°Π½ΠΈΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΡ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° ticket_office, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΊΠ»Π°ΡΡΠΎΠΌ direction, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ Π³ΠΎΡΠΎΠ΄ΠΎΠ² (ΠΊΠ»Π°ΡΡ city), Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π³ΠΎΡΠΎΠ΄Π΅ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΉΡΠΎΠ² (ΠΊΠ»Π°ΡΡ Run). Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π΄Π²ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π² ΠΠΠ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° — ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ.
ΠΠΎΡΠ»Π΅ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΡΡ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ, Π²Π΅Π΄Π΅ΡΡΡ ΠΏΠΎΠΈΡΠΊ Π±ΠΈΠ»Π΅ΡΠ° Π½Π° ΡΠ°ΠΌΡΠΉ ΡΠ°Π½Π½ΠΈΠΉ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ΅ΠΉΡ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±ΠΈΠ»Π΅ΡΠΎΠ² Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΠΉΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ 40 ΡΡ. ΠΡΠ»ΠΈ Π±ΠΈΠ»Π΅Ρ ΠΏΡΠΎΠ΄Π°Π½, ΡΠΎ Π² ΠΆΡΡΠ½Π°Π» ΡΠΎΠ±ΡΡΠΈΠΉ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΄Π°ΠΆΠΈ, Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΌΠ΅ΡΡΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Π½Π΅Ρ — Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ Π΅Π³ΠΎ Π½ΠΎΠΌΠ΅Ρ.
Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π² ΠΎΡΠ΅ΡΠ΅Π΄ΡΡ Π½Π° 1 ΠΌΠΈΠ½ΡΡΡ.
Π Π½Π°ΡΠ°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅ΠΉΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ RunDeparture (curr_time, textWritter), Π΅ΡΠ»ΠΈ ΡΠ΅ΠΉΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ, ΡΠΎ Π² ΠΆΡΡΠ½Π°Π» ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π·Π°ΠΏΠΈΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΉΡΠ° ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ°ΡΡΠ°ΠΆΠΈΡΠΎΠ².
2.2 ΠΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΏΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ StartSimulation (Time b, Time sim, int num, ProgressBar bar) ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ»Π°ΡΡΠ° Simulation, Π³Π΄Π΅ b — Π²ΡΠ΅ΠΌΡ Π½Π°ΡΠ°Π»Π° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, sim — Π²ΡΠ΅ΠΌΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, num — ΡΠ°ΡΡΠΎΡΠ° ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². ΠΡΠ΅ ΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°Π΄Π°ΡΡΡΡ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΉΠ» «test» Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ — ΠΆΡΡΠ½Π°Π» ΡΠΎΠ±ΡΡΠΈΠΉ. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ½ΠΊΡΠΈΡ StartSimulation (Time b, Time sim, int num, ProgressBar bar) ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
public void StartSimulation (Time b, Time sim, int num, ProgressBar bar)
{
TextWriter textWritter = new StreamWriter («test.txt»);//ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΆΡΡΠ½Π°Π» ΡΠΎΠ±ΡΡΠΈΠΉ
Time f = new Time ();
base_time.CopyTime (b);
simul_time.CopyTime (sim);
f = simul_time — base_time;
double fbar = (double)(f.getHour () * 60 + f. getMin ())/100;//Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Time curr_time = new Time ();//ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ
Time add = new Time ();
ticket_office tmp_off;//ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠ°ΡΡΡ
client tmp_client = new client ();
client cl_service;
List tmp_list_client;//ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
int t = 0;
Init_Service ();//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΡΡ ΠΏΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ΄ΠΎΠ², ΡΠ΅ΠΉΡΠΎΠ²
//——————-ΡΠΈΠΊΠ» ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ——————//
Client_arrival (base_time, num);//ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ±ΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
curr_time.CopyTime (base_time);//ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
for (; curr_time < simul_time; curr_time++)
{
RunDeparture (curr_time, textWritter);//ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΠΉΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ //Π΅ΡΡΡ
if (next_arrival == curr_time)//Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ±ΡΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ
{
Client_arrival (curr_time, num);//ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ //ΠΏΡΠΈΠ±ΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
CountClient++;
//ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ±ΡΡΠΈΡ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
tmp_client.setAll (CountClient, curr_time);
//Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ»
textWritter.WriteLine (curr_time.printTime () + «: ΠΏΡΠΈΠ±ΡΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ β «
+ Convert. ToString (tmp_client.getClientId ()));
textWritter.WriteLine (««);
AddClientToLine (tmp_client);//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ
}
for (int i = 0; i < service. Count; i++)//ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ //ΠΊΠ»ΠΈΠ΅ΡΠ½ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ°ΡΡΠ΅
{
tmp_off = (ticket_office)service.ToArray ().GetValue (i);
tmp_list_client = tmp_off.getLineClient ();
if (tmp_list_client.Count () ≠ 0)//Π΅ΡΠ»ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ ΠΏΡΡΡΠ°
{
cl_service = (client)tmp_list_client.ToArray ().GetValue (0);
if (cl_service.getServiceTime ().getHour () == 0 &&
cl_service.getServiceTime ().getMin () == 0)//Π΅ΡΠ»ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, //ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΠΌ
{
Service (tmp_off, cl_service, curr_time);
if (cl_service.getDepartureTime ().getHour () ≠ 0
|| cl_service.getDepartureTime ().getHour () ≠ 0)//Π΅ΡΠ»ΠΈ Π±ΠΈΠ»Π΅Ρ //ΠΏΡΠΎΠ΄Π°Π½
{
textWritter.WriteLine (curr_time.printTime () + «: ΠΠ»ΠΈΠ΅Π½ΡΡ β» + Convert. ToString (cl_service.getClientId ()));
textWritter.WriteLine («ΠΏΡΠΎΠ΄Π°Π½ Π±ΠΈΠ»Π΅Ρ Π½Π° «+
cl_service.getDestination ());
textWritter.WriteLine («Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ: «+
cl_service.getDepartureTime ().printTime ());
textWritter.WriteLine (««);
}
else
{
textWritter.WriteLine («ΠΠ»ΠΈΠ΅Π½ΡΡ β» +
Convert.ToString (cl_service.getClientId ()) + «Π±ΠΈΠ»Π΅Ρ Π½Π΅ ΠΏΡΠΎΠ΄Π°Π½»);
textWritter.WriteLine (««);
}
tmp_list_client.RemoveAt (0);//ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
}
}
}
SetTimeAll ();//ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
//—Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ—//
t++;
if (t == (int)fbar+1)
{
bar.Value += 1;
t = 0;
}
//——————————————————-//
}
bar.Value = 100;
textWritter.Close ();
}
2.3 ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΠΏΠ΅ΡΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ°ΡΠ°ΡΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Statistic (TextBox text) ΠΊΠ»Π°ΡΡΠ° Simulation. ΠΡΠ²ΠΎΠ΄ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π² ΡΠ»Π΅ΠΌΠ΅Π½Ρ TextBox Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°. Π Π½Π°ΡΠ°Π»Π΅ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΡΡΠΌΠΌΠ°ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ°ΡΡΠ°ΠΌ ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ². ΠΠ°Π»Π΅Π΅ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ².
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠ½ΠΊΡΠΈΡ Statistic (TextBox text) ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄:
public void Statistic (TextBox text)
{
text.Lines = new string[] { «ΠΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²: «+ Convert. ToString (CountClient) };
ticket_office t;
AverTime ();//Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ°ΡΡΠ°ΠΌ
text.AppendText (Environment.NewLine + «Π‘ΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ: «+ Average_time.printTime ());
for (int i = 0; i < service. Count; i++)//ΠΏΠ΅ΡΠ°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎ ΠΊΠ°ΡΡΠ°ΠΌ
{
t = (ticket_office)service.ToArray ().GetValue (i);
text.AppendText (Environment.NewLine + t. getDirectionName ());
text.AppendText (Environment.NewLine + «ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²: «
+ Convert. ToString (t.getCountClient ()));
text.AppendText (Environment.NewLine + «Π±ΠΈΠ»Π΅ΡΠΎΠ² ΠΏΡΠΎΠ΄Π°Π½ΠΎ: «
+ Convert. ToString (t.getCountTicket ()));
text.AppendText (Environment.NewLine + «Π‘ΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ: «
+ t. GetAverageTime ().printTime ());
}
}
ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΈΡΠ°ΡΠΈΡ Π²ΡΠ΅ΠΌΡ
2.4 Π Π°Π±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠΊΡΠ°Π½Π΅:
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΆΡΡΠ½Π°Π»Π΅ ΡΠΎΠ±ΡΡΠΈΠΉ:
6:30 ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΠΉΡΠ° Π² ΠΠΌΡΠΊ
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΡΠ°ΠΆΠΈΡΠΎΠ²: 0
6:35: ΠΏΡΠΈΠ±ΡΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ № 1
6:36: ΠΠ»ΠΈΠ΅Π½ΡΡ № 1 ΠΏΡΠΎΠ΄Π°Π½ Π±ΠΈΠ»Π΅Ρ Π½Π° ΠΠ°ΠΌΠ΅Π½Ρ-Π½Π°-ΠΠ±ΠΈ
Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ: 11:30
6:40: ΠΏΡΠΈΠ±ΡΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ № 2
…
19:40: ΠΏΡΠΈΠ±ΡΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ № 261
19:42: ΠΠ»ΠΈΠ΅Π½ΡΡ № 261 ΠΏΡΠΎΠ΄Π°Π½ Π±ΠΈΠ»Π΅Ρ Π½Π° ΠΠ°ΠΌΠ΅Π½Ρ-Π½Π°-ΠΠ±ΠΈ
Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ: 20:30
ΠΠ»ΠΈΠ΅Π½ΡΡ № 260 Π±ΠΈΠ»Π΅Ρ Π½Π΅ ΠΏΡΠΎΠ΄Π°Π½
19:45: ΠΏΡΠΈΠ±ΡΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ № 262
ΠΠ»ΠΈΠ΅Π½ΡΡ № 262 Π±ΠΈΠ»Π΅Ρ Π½Π΅ ΠΏΡΠΎΠ΄Π°Π½
19:47: ΠΏΡΠΈΠ±ΡΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ № 263
ΠΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
1. ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π΄Π»Ρ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² 2 ΠΊΡΡΡΠ° Π΄Π½Π΅Π²Π½ΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠ»ΡΡΠ΅ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠΊΠΈ ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ 230 100 «ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ° ΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ΅Ρ Π½ΠΈΠΊΠ°»
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1
Π€Π°ΠΉΠ» «Program.cs»
using System;
using System. IO;
using System.Collections.Generic;
using System. Linq;
using System.Windows.Forms;
using System. Threading;
namespace _1
{
//——-ΠΡΠ΅ΠΌΡ——-//
public class Time
{
private int hour;
private int min;
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
public Time ()
{
hour = min = 0;
}
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ
public Time (int h, int m)
{
hour = (h >= 0 && h < 24)? h: 0;
min = (m >= 0 && m < 60)? m: 0;
}
//ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
public void CopyTime (Time t)
{
hour = t. hour;
min = t. min;
}
//ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
public void setTime (int h, int m)
{
hour = (h >= 0 && h < 24)? h: 0;
min = (m >= 0 && m < 60)? m: 0;
}
//ΠΏΠ΅ΡΠ°ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
public string printTime ()
{
if (min < 10) return hour + «:0» + min;
else return hour + «:» + min;
}
//———ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ——-//
//ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ
public static Time operator ++(Time t1)
{
t1.min++;
if (t1.min >= 60)
{
t1.min -= 60;
t1.hour++;
}
return t1;
}
//Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ
public static Time operator —(Time t1)
{
t1.min—;
if (t1.min < 0)
{
t1.min += 60;
t1.hour—;
}
return t1;
}
//ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
public static Time operator +(Time t1, Time t2)
{
int h = t1. hour + t2. hour, m = t1. min + t2. min;
if (m >= 60)
{
m -= 60;
h++;
}
if (h > 23)
{
h -= 24;
}
return new Time (h, m);
}
//Π²ΡΡΠΈΡΠ°Π½ΠΈΠ΅
public static Time operator -(Time t1, Time t2)
{
int h = t1. hour — t2. hour, m = t1. min — t2. min;
if (m < 0)
{
m += 60;
h—;
}
return new Time (h, m);
}
//Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ
public static Time operator /(Time t1, int num)
{
int m, h;
m = (t1.hour * 60 + t1. min) / num;
h = m / 60;
m -= h * 60;
return new Time (h, m);
}
//ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅
public static bool operator ==(Time t1, Time t2)
{
if (t1.hour == t2. hour && t1. min == t2. min) return true;
else return false;
}
public static bool operator ≠(Time t1, Time t2)
{
if (t1.hour ≠ t2. hour && t1. min ≠ t2. min) return true;
else return false;
}
public static bool operator >(Time t1, Time t2)
{
if (t1.hour > t2. hour) return true;
else if (t1.hour < t2. hour) return false;
else if (t1.min > t2. min) return true;
else if (t1.min < t2. min) return false;
else return false;
}
public static bool operator >=(Time t1, Time t2)
public static bool operator <(Time t1, Time t2)
{
if (t1.hour < t2. hour) return true;
else if (t1.hour > t2. hour) return false;
else if (t1.min < t2. min) return true;
else if (t1.min > t2. min) return false;
else return false;
}
public static bool operator <=(Time t1, Time t2)
((t1.hour == t2. hour) && (t1.min <= t2. min))) return true;
else return false;
//——————————————————————————
//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΈΠ½ΡΡ, Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
public void PlusMin (int m)
{
min += m;
if (min >= 60)
{
min -= 60;
hour++;
}
}
public int getMin ()
{
return min;
}
public int getHour ()
{
return hour;
}
}
//—————————————————;
//——-ΠΠ»ΠΈΠ΅Π½Ρ——-//
class client
{
private Time arrive;//Π²ΡΠ΅ΠΌΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
private Time service_time;//Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ Π½Π° ΠΊΠ°ΡΡΠ΅
private Time departure_time;//Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅ΠΉΡΠ°
private int clientID;//Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
private string destination;//ΠΌΠ΅ΡΡΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
public client ()
{
arrive = new Time ();
service_time = new Time ();
departure_time = new Time ();
clientID = 0;
destination = «» ;
}
//ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
public void CopyClient (client t)
{
arrive.CopyTime (t.arrive);
service_time.CopyTime (t.service_time);
departure_time.CopyTime (t.departure_time);
clientID = t. clientID;
destination = t. destination;
}
//Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ
public Time getServiceTime ()
{
return service_time;
}
//" ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ" ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
public void setAll (int id, Time arr)
{
arrive.CopyTime (arr);
clientID = id;
Random rnd = new Random ();
Random x = new Random ();
int m = 0;
Thread.Sleep (15);
int n = rnd. Next (8) + 1;
switch (n)
{
case 1: destination = «Π’ΠΎΠΌΡΠΊ»; break;
case 2: destination = «ΠΡΠΈΠ½ΠΎ»; break;
case 3: destination = «Π‘ΡΡΠ΅ΠΆΠ΅Π²ΠΎΠΉ»; break;
case 4: destination = «ΠΠΌΡΠΊ»; break;
case 5: destination = «ΠΠ°Π»Π°ΡΠΈΠ½ΡΠΊ»; break;
case 6: destination = «Π’Π°ΡΠ°»; break;
case 7: destination = «ΠΠ°ΡΠ½Π°ΡΠ»»; break;
case 8: destination = «ΠΠ°ΠΌΠ΅Π½Ρ-Π½Π°-ΠΠ±ΠΈ»; break;
case 9: destination = «ΠΠΈΠΉΡΠΊ»; break;
}
m = rnd. Next (4) + 1;
service_time.setTime (0, m);
}
//ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ
public void setServiceTime (Time t)
{
service_time.CopyTime (t);
}
//ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ
public void NewServiceTime ()
{
service_time—;
}
//Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
public int getClientId ()
{
return clientID;
}
//ΠΌΠ΅ΡΡΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ
public string getDestination ()
{
return destination;
}
// Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ
public Time getDepartureTime ()
{
return departure_time;
}
// Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ
public void setDepartureTime (Time dt)
{
departure_time.CopyTime (dt);
}
}
//—————————————————————
//——-Π Π΅ΠΉΡ——-//
class Run
{
private int count_ticket;//ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
private Time departure;//Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
public Run ()
{
count_ticket = 0;
departure = new Time ();
}
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ
public Run (int count, Time dep)
{
count_ticket = count;
departure = new Time ();
departure.CopyTime (dep);
}
//ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
public void CopyRun (Run t)
{
count_ticket = t. count_ticket;
departure.CopyTime (t.departure);
}
//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π°ΠΏΡΠ²Π»Π΅Π½ΠΈΡ
public void setRun (int count, Time dep)
{
count_ticket = count;
departure.CopyTime (dep);
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅ΠΉΡΠ°
public Time getDepartureTime ()
{
return departure;
}
//ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
public int getCountTicket ()
{
return count_ticket;
}
//ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
public int getNumClients ()
{
return (40 — count_ticket);
}
//Π±ΠΈΠ»Π΅Ρ ΠΏΡΠΎΠ΄Π°Π½
public void setCountTicket ()
{
count_ticket—;
}
}
//————————————————————;
//——-ΠΠΎΡΠΎΠ΄——-//
class city
{
private string city_name;
private int count_ticket;//ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
private List list_Run;
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
public city ()
{
count_ticket = 0;
city_name = «» ;
list_Run = new List ();
}
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ
public city (string name)
{
city_name = name;
list_Run = new List ();
}
//ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
public void CopyCity (city t)
{
Run tmp = new Run ();
city_name = t. city_name;
count_ticket = t. count_ticket;
//ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°
for (int i = 0; i < t. list_Run.Count (); i++)
{
tmp.CopyRun ((Run)t.list_Run.ToArray ().GetValue (i));
list_Run.Add (tmp);
}
}
//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΉΡΠ° Π² Π³ΠΎΡΠΎΠ΄
public void AddRun (Run r)
{
Run rr = new Run ();
rr.CopyRun®;
list_Run.Add (rr);
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠΏΠΈΡΠΎΠΊ ΡΠ΅ΠΉΡΠΎΠ²
public List getListRun ()
{
return list_Run;
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
public string getNameCity ()
{
return city_name;
}
//ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
public void setCountTicket ()
{
count_ticket++;
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
public int getCountTicket ()
{
return count_ticket;
}
}
//————————————————————————
//——-ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅——-//
class direction
{
private string direction_name;
private List list_city;//ΡΠΏΠΈΡΠΎΠΊ Π³ΠΎΡΠΎΠ΄ΠΎΠ²
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ
public direction (string name)
{
direction_name = name;
list_city = new List ();
}
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
public direction ()
{
direction_name = «» ;
list_city = new List ();
}
//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ΄Π°
public void AddCity (city c)
{
city n = new city ();
n.CopyCity (c);
list_city.Add (c);
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠΏΠΈΡΠΎΠΊ Π³ΠΎΡΠΎΠ΄ΠΎΠ²
public List getListCity ()
{
List ptr = list_city;
return ptr;
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
public string getNameDirection ()
{
return direction_name;
}
//ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π½Π°Π·Π²Π°Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
public void setNameDirection (string name)
{
direction_name = name;
}
}
//————————————————————————
//——-ΠΠ°ΡΡΠ°——-//
class ticket_office
{
private Time waiting_time;//Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
private Time average_time;//ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ
private direction one;//Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
private int count_client;//ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
private int count_ticket;//ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
private List line;//ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
public ticket_office (string name)
{
count_ticket = 0;
count_client = 0;
waiting_time = new Time (0, 0);
average_time = new Time (0, 0);
one = new direction (name);
line = new List ();
}
public Time GetAverageTime ()
{
return average_time;
}
//ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π½Π° 1 ΠΌΠΈΠ½ΡΡΡ
public void SetTime ()
{
if (waiting_time.getHour () ≠ 0 || waiting_time.getMin () ≠ 0)
{
waiting_time—;
int n = line. Count ()-1;
client t;
while (n ≠ -1)
{
t = (client)line.ToArray ().GetValue (n);
t.NewServiceTime ();
n—;
}
}
}
//ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
public void setCountClient ()
{
count_client++;
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
public int getCountClient ()
{
return count_client;
}
//ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
public void setCountTicket ()
{
count_ticket++;
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ²
public int getCountTicket ()
{
return count_ticket;
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
public List getLineClient ()
{
return line;
}
//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ»ΠΈΠ΅ΡΠ°
public void AddToLine (client a)
{
client t = new client ();
t.CopyClient (a);
waiting_time.CopyTime (waiting_time + t. getServiceTime ());
t.setServiceTime (waiting_time);
if (t.getClientId () < 1)
{
average_time.CopyTime (average_time + waiting_time);
}
else
{
average_time.CopyTime ((average_time + waiting_time) / 2);
}
line.Add (t);
}
//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ΄Π° Π² Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
public void InsertCity (city c)
{
one.AddCity (c);
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
public string getDirectionName ()
{
return one. getNameDirection ();
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
public direction getDirection ()
{
return one;
}
}
//——————————————————————————
class Simulation
{
private Time base_time;//Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ
private Time simul_time;//Π²ΡΠ΅ΠΌΡ ΡΠΈΠΌΡΠ»ΡΡΠΈΠΈ
private Time next_arrival;//Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ±ΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
private int CountClient;//ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
private Time Average_time;//ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ
private List service;// ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΡ
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ
public Simulation ()
{
Average_time = new Time ();
next_arrival = new Time ();
base_time = new Time ();
simul_time = new Time ();
CountClient = 0;
service = new List ();
}
//ΠΏΠ΅ΡΠ°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ ΠΎΠΊΠ½Π΅
public void Statistic (TextBox text)
{
text.Lines = new string[] { «ΠΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²: «+ Convert. ToString (CountClient) };
ticket_office t;
AverTime ();//Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌ ΠΊΠ°ΡΡΠ°ΠΌ
text.AppendText (Environment.NewLine + «Π‘ΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ: «+ Average_time.printTime ());
for (int i = 0; i < service. Count; i++)//ΠΏΠ΅ΡΠ°ΡΡ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎ ΠΊΠ°ΡΡΠ°ΠΌ
{
t = (ticket_office)service.ToArray ().GetValue (i);
text.AppendText (Environment.NewLine + t. getDirectionName ());
text.AppendText (Environment.NewLine + «ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²: «
+ Convert. ToString (t.getCountClient ()));
text.AppendText (Environment.NewLine + «Π±ΠΈΠ»Π΅ΡΠΎΠ² ΠΏΡΠΎΠ΄Π°Π½ΠΎ: «
+ Convert. ToString (t.getCountTicket ()));
text.AppendText (Environment.NewLine + «Π‘ΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ: «
+ t. GetAverageTime ().printTime ());
}
}
//ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΎΠ΄ΠΈΠ΄Π°Π½ΠΈΡ
public void AverTime ()
{
Time temp = new Time (0,0);
ticket_office t;
for (int i = 0; i < service. Count; i++)
{
t = (ticket_office)service.ToArray ().GetValue (i);
temp = temp + t. GetAverageTime ();
}
Average_time = temp / (service.Count);
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
public Time getBaseTime ()
{
return base_time;
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
public Time getSimulTime ()
{
return simul_time;
}
//ΡΡΡΠ°Π½ΠΎΠΊΠ° ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
public void setSimulTime (Time sim)
{
simul_time = sim;
}
//Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
public int getCountClient ()
{
return CountClient;
}
//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΡ Ρ ΡΠΆΠ΅ Π·Π°Π΄Π°Π½Π½ΡΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ
public void AddTicketOffice (string name_direction)
{
ticket_office t = new ticket_office (name_direction);
service.Add (t);
}
//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ΄Π° ΠΏΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
public void AddCity (string name_direct, string name_city)
{
city c = new city (name_city);
direction tmp = SearchDirection (name_direct);
tmp.AddCity (c);
}
//ΠΏΠΎΠΈΡΠΊ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ°
public direction SearchDirection (string name_direct)
{
ticket_office tmp;
int n = service. Count () — 1;
tmp = (ticket_office)service.ToArray ().GetValue (n);
while (tmp.getDirectionName () ≠ name_direct)
{
tmp = (ticket_office)service.ToArray ().GetValue (n);
n—;
}
return tmp. getDirection ();
}
//ΠΏΠΎΠΈΡΠΊ Π³ΠΎΡΠΎΠ΄Π° ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° Π³ΠΎΡΠΎΠ΄
//ΡΡΠ½ΠΊΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΉΡΠ°
public city SearchCity (string name_city)
{
city c;
direction t;
ticket_office tmp;
int n = service. Count () — 1;
int k = 0;
while (true)//ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ Π²ΡΠ΅ ΠΊΠ°ΡΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΠΌ Π½ΡΠΆΠ½ΡΠΉ Π³ΠΎΡΠΎΠ΄
{
tmp = (ticket_office)service.ToArray ().GetValue (n);
t = tmp. getDirection ();
k = t. getListCity ().Count () — 1;
c = (city)t.getListCity ().ToArray ().GetValue (k);
while (c.getNameCity () ≠ name_city)
{
if (k == -1) break;
c = (city)t.getListCity ().ToArray ().GetValue (k);
k—;
}
if (c.getNameCity () == name_city) break;
n—;
}
return c;
}
//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΉΡΠ° Π² Π³ΠΎΡΠΎΠ΄
public void AddRun (string name_city, Run r)
{
city c = SearchCity (name_city);
c.AddRun®;
}
//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π² Π½ΡΠΆΠ½ΡΡ ΠΊΠ°ΡΡΡ
public void AddClientToLine (client add)
{
city c;
direction t;
ticket_office tmp_off;
client tmp = add;
int n = service. Count () — 1;
int k = 0;
while (true)
{
tmp_off = (ticket_office)service.ToArray ().GetValue (n);
t = tmp_off.getDirection ();
k = t. getListCity ().Count () — 1;
c = (city)t.getListCity ().ToArray ().GetValue (k);
while ((c.getNameCity () ≠ tmp. getDestination ()) && k ≠ -1)
{
c = (city)t.getListCity ().ToArray ().GetValue (k);
k—;
}
if (c.getNameCity () == tmp. getDestination ()) break;
n—;
}
tmp_off.AddToLine (tmp);
}
//ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡΡΠ½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
//Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΡΠ΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² (Π² ΠΌΠΈΠ½ΡΡΠ°Ρ )
void Client_arrival (Time curr, int num)
{
Random rnd = new Random ();
int t = rnd. Next (num) + 1;
next_arrival.CopyTime (curr);
next_arrival.PlusMin (t);
}
//ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
public void Service (ticket_office off, client _client, Time curr)
{
city t = SearchCity (_client.getDestination ());//ΠΈΡΠ΅ΠΌ Π½ΡΠΆΠ½ΡΠΉ Π³ΠΎΡΠΎΠ΄
bool yes = false;//ΠΏΡΠΎΠ΄Π°ΠΆΠ° Π±ΠΈΠ»Π΅ΡΠ°
Run tmp_r, ttmp_r;
Time tmp_time = new Time ();
List r = t. getListRun ();
ttmp_r = (Run)r.ToArray ().GetValue (0);
Time tmp2;
tmp_time.CopyTime (ttmp_r.getDepartureTime ());
for (int i = 0; i < r. Count; i++)//ΠΏΠΎΠΈΡΠΊ Π±ΠΈΠ»Π΅ΡΠ°
{
tmp_r = (Run)r.ToArray ().GetValue (i);
tmp2 = tmp_r.getDepartureTime ();
if (!yes)
tmp_time.CopyTime (tmp2);
if ((curr < tmp_time) && (tmp_time >= tmp2) && (tmp2 >= curr) && (tmp_r.getCountTicket () ≠ 0))
{
tmp_time.CopyTime (tmp2);
ttmp_r = (Run)r.ToArray ().GetValue (i);
yes = true;
}
}
if (!yes || tmp_time == curr)//Π΅ΡΠ»ΠΈ Π½Π΅Ρ Π±ΠΈΠ»Π΅ΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠ΅ΠΉΡΠΎΠ²
{
off.setCountClient ();//ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
}
else
{
off.setCountClient ();//ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
off.setCountTicket ();//ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π½Π° ΠΊΠ°ΡΡΠ΅ Π±ΠΈΠ»Π΅ΡΠΎΠ²
t.setCountTicket ();////ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ΄Π°Π½Π½ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ² Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ Π³ΠΎΡΠΎΠ΄
ttmp_r.setCountTicket ();//ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΡΠ°Π²ΡΠΈΡ ΡΡ Π±ΠΈΠ»Π΅ΡΠΎΠ² Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΉΡ
_client.setDepartureTime (tmp_time);//ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
}
}
//ΡΡΠ½ΠΊΡΠΈΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅ΡΠ½ΠΎΠ² Π½Π° 1 ΠΌΠΈΠ½ΡΡΡ
//ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΠΈΠΊΠ»Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
public void SetTimeAll ()
{
ticket_office t;
for (int i = 0; i < service. Count; i++)
{
t = (ticket_office)service.ToArray ().GetValue (i);
t.SetTime ();
}
}
//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΡΡ ΠΏΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ΄ΠΎΠ², ΡΠ΅ΠΉΡΠΎΠ²
public void Init_Service ()
{
Time run_time = new Time ();//Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅ΠΉΡΠ°
Run run = new Run ();
AddTicketOffice («Π’ΠΎΠΌΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ»);
AddCity («Π’ΠΎΠΌΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ», «Π’ΠΎΠΌΡΠΊ»);
run_time.setTime (10, 0);
run.setRun (40, run_time);
AddRun («Π’ΠΎΠΌΡΠΊ», run);
run_time.setTime (12, 30);
run.setRun (40, run_time);
AddRun («Π’ΠΎΠΌΡΠΊ», run);
run_time.setTime (16, 50);
run.setRun (40, run_time);
AddRun («Π’ΠΎΠΌΡΠΊ», run);
AddCity («Π’ΠΎΠΌΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ», «ΠΡΠΈΠ½ΠΎ»);
run_time.setTime (9, 30);
run.setRun (40, run_time);
AddRun («ΠΡΠΈΠ½ΠΎ», run);
run_time.setTime (16, 10);
run.setRun (40, run_time);
AddRun («ΠΡΠΈΠ½ΠΎ», run);
run_time.setTime (18, 50);
run.setRun (40, run_time);
AddRun («ΠΡΠΈΠ½ΠΎ», run);
AddCity («Π’ΠΎΠΌΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ», «Π‘ΡΡΠ΅ΠΆΠ΅Π²ΠΎΠΉ»);
run_time.setTime (7, 30);
run.setRun (40, run_time);
AddRun («Π‘ΡΡΠ΅ΠΆΠ΅Π²ΠΎΠΉ», run);
run_time.setTime (12, 0);
run.setRun (40, run_time);
AddRun («Π‘ΡΡΠ΅ΠΆΠ΅Π²ΠΎΠΉ», run);
run_time.setTime (17, 20);
run.setRun (40, run_time);
AddRun («Π‘ΡΡΠ΅ΠΆΠ΅Π²ΠΎΠΉ», run);
AddTicketOffice («ΠΠΌΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ»);
AddCity («ΠΠΌΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ», «ΠΠΌΡΠΊ»);
run_time.setTime (6, 30);
run.setRun (40, run_time);
AddRun («ΠΠΌΡΠΊ», run);
run_time.setTime (11, 40);
run.setRun (40, run_time);
AddRun («ΠΠΌΡΠΊ», run);
run_time.setTime (16, 50);
run.setRun (40, run_time);
AddRun («ΠΠΌΡΠΊ», run);
AddCity («ΠΠΌΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ», «ΠΠ°Π»Π°ΡΠΈΠ½ΡΠΊ»);
run_time.setTime (9, 10);
run.setRun (40, run_time);
AddRun («ΠΠ°Π»Π°ΡΠΈΠ½ΡΠΊ», run);
run_time.setTime (10, 50);
run.setRun (40, run_time);
AddRun («ΠΠ°Π»Π°ΡΠΈΠ½ΡΠΊ», run);
run_time.setTime (18, 10);
run.setRun (40, run_time);
AddRun («ΠΠ°Π»Π°ΡΠΈΠ½ΡΠΊ», run);
AddCity («ΠΠΌΡΠΊΠ°Ρ ΠΎΠ±Π»Π°ΡΡΡ», «Π’Π°ΡΠ°»);
run_time.setTime (8, 00);
run.setRun (40, run_time);
AddRun («Π’Π°ΡΠ°», run);
run_time.setTime (12, 00);
run.setRun (40, run_time);
AddRun («Π’Π°ΡΠ°», run);
run_time.setTime (16, 00);
run.setRun (40, run_time);
AddRun («Π’Π°ΡΠ°», run);
AddTicketOffice («ΠΠ»ΡΠ°ΠΉΡΠΊΠΈΠΉ ΠΊΡΠ°ΠΉ»);
AddCity («ΠΠ»ΡΠ°ΠΉΡΠΊΠΈΠΉ ΠΊΡΠ°ΠΉ», «ΠΠ°ΡΠ½Π°ΡΠ»»);
run_time.setTime (10, 30);
run.setRun (40, run_time);
AddRun («ΠΠ°ΡΠ½Π°ΡΠ»», run);
run_time.setTime (13, 40);
run.setRun (40, run_time);
AddRun («ΠΠ°ΡΠ½Π°ΡΠ»», run);
run_time.setTime (17, 30);
run.setRun (40, run_time);
AddRun («ΠΠ°ΡΠ½Π°ΡΠ»», run);
AddCity («ΠΠ»ΡΠ°ΠΉΡΠΊΠΈΠΉ ΠΊΡΠ°ΠΉ», «ΠΠ°ΠΌΠ΅Π½Ρ-Π½Π°-ΠΠ±ΠΈ»);
run_time.setTime (11, 30);
run.setRun (40, run_time);
AddRun («ΠΠ°ΠΌΠ΅Π½Ρ-Π½Π°-ΠΠ±ΠΈ», run);
run_time.setTime (15, 40);
run.setRun (40, run_time);
AddRun («ΠΠ°ΠΌΠ΅Π½Ρ-Π½Π°-ΠΠ±ΠΈ», run);
run_time.setTime (20, 30);
run.setRun (40, run_time);
AddRun («ΠΠ°ΠΌΠ΅Π½Ρ-Π½Π°-ΠΠ±ΠΈ», run);
AddCity («ΠΠ»ΡΠ°ΠΉΡΠΊΠΈΠΉ ΠΊΡΠ°ΠΉ», «ΠΠΈΠΉΡΠΊ»);
run_time.setTime (8, 30);
run.setRun (40, run_time);
AddRun («ΠΠΈΠΉΡΠΊ», run);
run_time.setTime (17, 00);
run.setRun (40, run_time);
AddRun («ΠΠΈΠΉΡΠΊ», run);
run_time.setTime (21, 50);
run.setRun (40, run_time);
AddRun («ΠΠΈΠΉΡΠΊ», run);
}
//ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΉΡΠ°
public void RunDeparture (Time dep, TextWriter text)
{
ticket_office tmp_off;
List tmp_list_city;
city tmp_city;
List tmp_list_run;
Run tmp_run;
for (int i = 0; i < service. Count; i++)
{
tmp_off = (ticket_office)service.ToArray ().GetValue (i);
tmp_list_city = tmp_off.getDirection ().getListCity ();
for (int j = 0; j < tmp_list_city.Count; j++)
{
tmp_city = (city)tmp_list_city.ToArray ().GetValue (j);
tmp_list_run = tmp_city.getListRun ();
for (int k = 0; k < tmp_list_run.Count; k++)
{
tmp_run = (Run)tmp_list_run.ToArray ().GetValue (k);
if (tmp_run.getDepartureTime () == dep)//Π΅ΡΠ»ΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΠΉΡ
{
text.WriteLine (tmp_run.getDepartureTime ().printTime ()
+ «ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΠΉΡΠ° Π² «+ tmp_city.getNameCity ());
text.WriteLine («ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΡΠ°ΠΆΠΈΡΠΎΠ²: «+
Convert.ToString (tmp_run.getNumClients ()));
text.WriteLine (««);
}
}
}
}
}
//—— ΠΠΠΠΠΠΠ ΠΠΠΠΠΠ ——//
public void StartSimulation (Time b, Time sim, int num, ProgressBar bar)
{
TextWriter textWritter = new StreamWriter («test.txt»);//ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΆΡΡΠ½Π°Π» ΡΠΎΠ±ΡΡΠΈΠΉ
Time f = new Time ();
base_time.CopyTime (b);
simul_time.CopyTime (sim);
f = simul_time — base_time;
double fbar = (double)(f.getHour () * 60 + f. getMin ())/100;//Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
Time curr_time = new Time ();//ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ
Time add = new Time ();
ticket_office tmp_off;//ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠ°ΡΡΡ
client tmp_client = new client ();
client cl_service;
List tmp_list_client;//ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
int t = 0;
Init_Service ();//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΡΡ ΠΏΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ΄ΠΎΠ², ΡΠ΅ΠΉΡΠΎΠ²
//——————-ΡΠΈΠΊΠ» ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ——————//
Client_arrival (base_time, num);//ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ±ΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
curr_time.CopyTime (base_time);//ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
for (; curr_time < simul_time; curr_time++)
{
RunDeparture (curr_time, textWritter);//ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ΅ΠΉΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π΅ΡΡΡ
if (next_arrival == curr_time)//Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ±ΡΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ
{
Client_arrival (curr_time, num);//ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ±ΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
CountClient++;
//ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ±ΡΡΠΈΡ ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
tmp_client.setAll (CountClient, curr_time);
//Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ»
textWritter.WriteLine (curr_time.printTime () + «: ΠΏΡΠΈΠ±ΡΠ» ΠΊΠ»ΠΈΠ΅Π½Ρ β «
+ Convert. ToString (tmp_client.getClientId ()));
textWritter.WriteLine (««);
AddClientToLine (tmp_client);//Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΎΡΠ΅ΡΠ΅Π΄Ρ
}
for (int i = 0; i < service. Count; i++)//ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΊΠ»ΠΈΠ΅ΡΠ½ΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ°ΡΡΠ΅
{
tmp_off = (ticket_office)service.ToArray ().GetValue (i);
tmp_list_client = tmp_off.getLineClient ();
if (tmp_list_client.Count () ≠ 0)//Π΅ΡΠ»ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½Π΅ ΠΏΡΡΡΠ°
{
cl_service = (client)tmp_list_client.ToArray ().GetValue (0);
if (cl_service.getServiceTime ().getHour () == 0 &&
cl_service.getServiceTime ().getMin () == 0)//Π΅ΡΠ»ΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΠΌ
{
Service (tmp_off, cl_service, curr_time);
if (cl_service.getDepartureTime ().getHour () ≠ 0
|| cl_service.getDepartureTime ().getHour () ≠ 0)//Π΅ΡΠ»ΠΈ Π±ΠΈΠ»Π΅Ρ ΠΏΡΠΎΠ΄Π°Π½
{
textWritter.WriteLine (curr_time.printTime () + «: ΠΠ»ΠΈΠ΅Π½ΡΡ β» +
Convert.ToString (cl_service.getClientId ()));
textWritter.WriteLine («ΠΏΡΠΎΠ΄Π°Π½ Π±ΠΈΠ»Π΅Ρ Π½Π° «+
cl_service.getDestination ());
textWritter.WriteLine («Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ: «+
cl_service.getDepartureTime ().printTime ());
textWritter.WriteLine (««);
}
else
{
textWritter.WriteLine («ΠΠ»ΠΈΠ΅Π½ΡΡ β» +
Convert.ToString (cl_service.getClientId ()) + «Π±ΠΈΠ»Π΅Ρ Π½Π΅ ΠΏΡΠΎΠ΄Π°Π½»);
textWritter.WriteLine (««);
}
tmp_list_client.RemoveAt (0);//ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΠ· ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ
}
}
}
SetTimeAll ();//ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
//—Π΄Π»Ρ ΠΏΠΎΠ»ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠ° ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ—//
t++;
if (t == (int)fbar+1)
{
bar.Value += 1;
t = 0;
}
//——————————————————-//
}
bar.Value = 100;
textWritter.Close ();
}
}
static class Program
{
/// ΠΠ»Π°Π²Π½Π°Ρ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
[STAThread]
static void Main ()
{
Application.EnableVisualStyles ();
Application.SetCompatibleTextRenderingDefault (false);
Application.Run (new Form1());
}
}
}
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 2
Π€Π°ΠΉΠ» «Form1.cs»
using System;
using System.Collections.Generic;
using System. ComponentModel;
using System. Data;
using System. Drawing;
using System. Linq;
using System. Text;
using System.Windows.Forms;
using System. Diagnostics;
namespace _1
{
public partial class Form1: Form
{
Simulation A;
Time start;
Time end;
public Form1()
{
InitializeComponent ();
}
private void Form1_Load (object sender, EventArgs e)
{
}
private void textBox1_TextChanged (object sender, EventArgs e)
{
}
private void button1_Click (object sender, EventArgs e)
{
A = new Simulation ();
start = new Time (Convert.ToInt32(StartTimeHours.Value), Convert. ToInt32(StartTimeMin.Value));
end = new Time (Convert.ToInt32(EndTimeHours.Value), Convert. ToInt32(EndTimeMin.Value));
int n = Convert. ToInt32(num.Value);
progressBar1.Value = 0;
if (start >= end) MessageBox. Show («ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ Π²Π²ΠΎΠ΄»);
else
{
A.StartSimulation (start, end, n, progressBar1);
A.Statistic (textBox1);
}
}
private void button2_Click (object sender, EventArgs e)
{
Close ();
}
private void button3_Click (object sender, EventArgs e)
{
Process p1 = new Process ();
p1.StartInfo.UseShellExecute = true;
p1.StartInfo.RedirectStandardOutput = false;
p1.StartInfo.FileName = «test.txt» ;
p1.Start ();
p1.WaitForExit ();
}
}