1470 - Parcare: Difference between revisions
Cuceu Andrei (talk | contribs) Pagină nouă: ==Enunt== În parcările din Iași, intrarea în parcare este permisă dacă șoferul care dorește să parcheze solicită acest lucru. Solicitarea se face prin apăsarea unui buton la automatul aflat la intrarea în parcare, acțiune care are ca efect eliberarea unui tichet de parcare și deschiderea barierei. Pe tichet sunt trecute data și ora intrării în parcare. La plecare, șoferul scanează tichetul la automatul de plată. În urma scanării automatul calculează... |
Vardai Erwin (talk | contribs) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== | ==Enunț== | ||
În parcările din Iași, intrarea în parcare este permisă dacă șoferul care dorește să parcheze solicită acest lucru. | În parcările din Iași, intrarea în parcare este permisă dacă șoferul care dorește să parcheze solicită acest lucru. | ||
Line 10: | Line 10: | ||
*diferența calculată se rotunjește la număr întreg de ore, în sus | *diferența calculată se rotunjește la număr întreg de ore, în sus | ||
*se înmulțește timpul exprimat în ore cu tariful orar | *se înmulțește timpul exprimat în ore cu tariful orar | ||
==Cerință== | ==Cerință== | ||
Line 28: | Line 27: | ||
==Date de ieșire== | ==Date de ieșire== | ||
Fişierul de ieşire '''parcare.out''' conţine pe prima linie o valoarea naturală reprezentând timpul cât mașina a stat în parcare, exprimat în minute, dacă cerinţa a fost''' 1''', respectiv suma de plată, dacă cerinţa a fost '''2'''. | Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Fişierul de ieşire '''parcare.out''' conţine pe prima linie o valoarea naturală reprezentând timpul cât mașina a stat în parcare, exprimat în minute, dacă cerinţa a fost''' 1''', respectiv suma de plată, dacă cerinţa a fost '''2'''. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse." | ||
==Restricții și precizări== | ==Restricții și precizări== | ||
Line 50: | Line 49: | ||
;'''parcare.out''' | ;'''parcare.out''' | ||
208 | 208 | ||
;Ieșire | |||
:Datele de intrare corespund restricțiilor impuse. | |||
==Explicatie== | ==Explicatie== | ||
Line 66: | Line 68: | ||
12 | 12 | ||
== | ;Ieșire | ||
:Datele de intrare corespund restricțiilor impuse. | |||
==Explicație== | |||
Tariful orar este 3 lei/oră. Se deduce că 208 minute = 3 ore și 28 minute, deci se plătesc 4 ore, 4 * 3 = 12. | Tariful orar este 3 lei/oră. Se deduce că 208 minute = 3 ore și 28 minute, deci se plătesc 4 ore, 4 * 3 = 12. |
Latest revision as of 18:23, 7 May 2023
Enunț[edit | edit source]
În parcările din Iași, intrarea în parcare este permisă dacă șoferul care dorește să parcheze solicită acest lucru.
Solicitarea se face prin apăsarea unui buton la automatul aflat la intrarea în parcare, acțiune care are ca efect eliberarea unui tichet de parcare și deschiderea barierei. Pe tichet sunt trecute data și ora intrării în parcare.
La plecare, șoferul scanează tichetul la automatul de plată. În urma scanării automatul calculează şi afișează suma de plată. Calculul sumei se face astfel:
- se citește de la ceasul automatului data și ora plecării
- se calculează diferența de timp dintre ora plecării și ora intrării în parcare
- diferența calculată se rotunjește la număr întreg de ore, în sus
- se înmulțește timpul exprimat în ore cu tariful orar
Cerință[edit | edit source]
Cunoscându-se data și ora intrării în parcare, data și ora plecării din parcare și tariful orar, să se determine timpul cât a stat mașina în parcare și suma de plată.
Date de intrare[edit | edit source]
Fişierul de intrare parcare.in conţine pe prima linie data și ora intrării în parcare, separate printr-un spațiu, sub forma zz ll hh mm.
Pe linia a doua a fişierului de intrare se găsesc data și ora plecării din parcare, separate printr-un spațiu, sub forma zz ll hh mm.
Linia a treia conţine un număr natural t reprezentând tariful orar exprimat în lei.
Pe linia a patra a fișierului de intrare se găsește una dintre valorile 1 sau 2 reprezentând cerinţa: 1, dacă se cere determinarea timpului cât a stat mașina în parcare, timp exprimat în minute, respectiv 2, dacă se cere determinarea sumei de plată pentru parcare.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." Fişierul de ieşire parcare.out conţine pe prima linie o valoarea naturală reprezentând timpul cât mașina a stat în parcare, exprimat în minute, dacă cerinţa a fost 1, respectiv suma de plată, dacă cerinţa a fost 2. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări[edit | edit source]
- Mașina stă în parcare cel puţin 1 minut dar nu poate sta mai mult de 7 zile.
- Dacă timpul de staţionare nu depăşeşte 15 minute, nu se percepe taxă.
- Cele două date sunt din același an, care nu este bisect.
- Minutul de plecare din parcare nu se contorizează.
- Minutele unei ore sunt numerotate de la 0 la 59.
- 1 <= t <= 100
- Pentru cerinţa 1 se acordă 50% din punctaj, iar pentru cerinţa 2 se acordă încă 50% din punctaj.
Exemplul 1[edit | edit source]
- parcare.in
30 01 17 33 30 01 21 01 3 1
- parcare.out
208
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
Explicatie[edit | edit source]
Intrarea în parcare s-a făcut în data de 30 ianuarie ora 17:33. Plecarea s-a făcut în aceeași zi la ora 21:01. Deci timpul cât mașina a stat în parcare este 27 + 3*60 + 1 = 208 minute
Exemplul 2[edit | edit source]
- parcare.in
30 01 17 33 30 01 21 01 3 2
- parcare.out
12
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
Explicație[edit | edit source]
Tariful orar este 3 lei/oră. Se deduce că 208 minute = 3 ore și 28 minute, deci se plătesc 4 ore, 4 * 3 = 12.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1">
def validate_input(start_date, start_hour, end_date, end_hour, tariff):
# Verificam daca datele sunt valide # ...
return True
def calculate_parking_time(start_date, start_hour, end_date, end_hour):
# Calculam timpul petrecut in parcare # ...
return parking_time
def calculate_parking_fee(parking_time, tariff):
# Calculam suma de plata in functie de timpul petrecut in parcare si tariful orar # ...
return parking_fee
if __name__ == '__main__':
# Citim datele de intrare din fisierul parcare.in with open('parcare.in') as f: start_date, start_hour = map(int, f.readline().split()) end_date, end_hour = map(int, f.readline().split()) tariff = int(f.readline()) request = int(f.readline())
# Validam datele de intrare if not validate_input(start_date, start_hour, end_date, end_hour, tariff): print('Datele de intrare sunt invalide.') exit()
# Calculam timpul petrecut in parcare si suma de plata parking_time = calculate_parking_time(start_date, start_hour, end_date, end_hour) parking_fee = calculate_parking_fee(parking_time, tariff)
# Scriem rezultatele in fisierul parcare.out with open('parcare.out', 'w') as f: if request == 1: f.write(str(parking_time) + '\n') else: f.write(str(parking_fee) + '\n')
</syntaxhighlight>