3062 - Vas: Difference between revisions
Sinn Erich (talk | contribs) |
Sinn Erich (talk | contribs) |
||
(One intermediate revision by the same user not shown) | |||
Line 30: | Line 30: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#3062 | #3062 | ||
def | def time_to_reach_minimum_water_level(initial_water_amount, time_per_evaporation, minimum_water_amount): | ||
time_elapsed = 0 | |||
while | while initial_water_amount > minimum_water_amount: | ||
initial_water_amount -= initial_water_amount/4 # amount evaporated | |||
time_elapsed += time_per_evaporation | |||
return | return time_elapsed | ||
def | def validate_input(initial_water_amount, time_per_evaporation, minimum_water_amount): | ||
if not (1 <= | if not (1 <= initial_water_amount <= 1000000000 and 1 <= time_per_evaporation <= 1000000000 and 1 <= minimum_water_amount <= 1000000000): | ||
return False | return False | ||
return True | return True | ||
Line 45: | Line 45: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
initial_water_amount = int(input("Introduceti cantitatea initiala de apa (in litri): ")) | |||
time_per_evaporation = int(input("Introduceti intervalul de timp (in minute): ")) | |||
minimum_water_amount = int(input("Introduceti cantitatea minima de apa ramasa in vas (in litri): ")) | |||
if not | if not validate_input(initial_water_amount, time_per_evaporation, minimum_water_amount): | ||
print("Datele nu corespund restricțiilor impuse.") | print("Datele nu corespund restricțiilor impuse.") | ||
else: | else: | ||
time_elapsed = time_to_reach_minimum_water_level(initial_water_amount, time_per_evaporation, minimum_water_amount) | |||
print("Datele sunt introduse corect.") | print("Datele sunt introduse corect.") | ||
print("Dupa", | print("Dupa", time_elapsed, "minute vor ramane in vas cel mult", minimum_water_amount, "litri de apa.") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 60: | Line 61: | ||
'''Explicatie cod:''' | '''Explicatie cod:''' | ||
Acesta este un program Python care calculează timpul necesar pentru evaporarea unei cantități de apă date până la atingerea unei cantități minime. | |||
Programul este compus din două funcții: time_to_reach_minimum_water_level și validate_input. | |||
time_to_reach_minimum_water_level primește trei argumente: initial_water_amount, time_per_evaporation și minimum_water_amount. În primul rând, initializează time_elapsed la 0, care va urmări timpul total care a trecut în timpul procesului de evaporare. | |||
Apoi intră într-un ciclu while care continuă atâta timp cât initial_water_amount este mai mare decât minimum_water_amount. În fiecare iterație a buclei, initial_water_amount este scăzut cu o pătrime (adică initial_water_amount/4) pentru a ține cont de cantitatea de apă care s-a evaporat în intervalul de timp time_per_evaporation. De asemenea, variabila time_elapsed este crescută cu time_per_evaporation. Odată ce initial_water_amount este mai mic sau egal cu minimum_water_amount, bucla se termină și time_elapsed este returnat. | |||
validate_input primește aceiași trei argumente ca time_to_reach_minimum_water_level și verifică dacă fiecare valoare se află între 1 și 1.000.000.000 (inclusiv). Dacă o valoare este în afara acestui interval, funcția returnează False. În caz contrar, returnează True. | |||
În cele din urmă, în partea principală a programului, utilizatorului i se solicită să introducă cantitatea inițială de apă, intervalul de timp per evaporare și cantitatea minimă de apă. Dacă aceste intrări nu îndeplinesc condițiile necesare (verificate de validate_input), se afișează un mesaj de eroare. În caz contrar, programul apelează time_to_reach_minimum_water_level cu intrările date și afișează timpul rezultat împreună cu un mesaj de confirmare. |
Latest revision as of 09:35, 28 April 2023
Sursa: [1]
Cerinţa[edit | edit source]
Într-un vas sunt x litri de apă (x>0). După fiecare t minute, un sfert din cantitatea de apă se evaporă. Să se determine după câte minute vor rămâne în vas cel mult y litri de apă.
Date de intrare[edit | edit source]
Programul citește de la tastatură cantitatea initiala de apa (in litri), intervalul de timp (in minute), cantitatea minima de apa ramasa in vas (in litri).
Date de ieșire[edit | edit source]
Programul va afișa pe ecran un număr natural Introduceti cantitatea initiala de apa (in litri): , Introduceti intervalul de timp (in minute): ,Introduceti cantitatea minima de apa ramasa in vas (in litri): litri de apă.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează după câte minute vor rămâne în vas cel mult y litri de apă.
În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."
Restricţii şi precizări[edit | edit source]
1 ≤ cantitatea initiala de apa (in litri),intervalul de timp (in minute),cantitatea minima de apa ramasa in vas (in litri) ≤ 1.000.000.000
Exemplul 1[edit | edit source]
- Datele de intrare
- Introduceti cantitatea initiala de apa (in litri): 100
- Introduceti intervalul de timp (in minute): 15
- Introduceti cantitatea minima de apa ramasa in vas (in litri): 20
- Datele de ieșire
- Datele sunt introduse corect.
- Dupa 90 minute vor ramane in vas cel mult 20 litri de apa.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3062
def time_to_reach_minimum_water_level(initial_water_amount, time_per_evaporation, minimum_water_amount):
time_elapsed = 0 while initial_water_amount > minimum_water_amount: initial_water_amount -= initial_water_amount/4 # amount evaporated time_elapsed += time_per_evaporation return time_elapsed
def validate_input(initial_water_amount, time_per_evaporation, minimum_water_amount):
if not (1 <= initial_water_amount <= 1000000000 and 1 <= time_per_evaporation <= 1000000000 and 1 <= minimum_water_amount <= 1000000000): return False return True
if __name__ == '__main__':
initial_water_amount = int(input("Introduceti cantitatea initiala de apa (in litri): ")) time_per_evaporation = int(input("Introduceti intervalul de timp (in minute): ")) minimum_water_amount = int(input("Introduceti cantitatea minima de apa ramasa in vas (in litri): "))
if not validate_input(initial_water_amount, time_per_evaporation, minimum_water_amount): print("Datele nu corespund restricțiilor impuse.") else: time_elapsed = time_to_reach_minimum_water_level(initial_water_amount, time_per_evaporation, minimum_water_amount) print("Datele sunt introduse corect.") print("Dupa", time_elapsed, "minute vor ramane in vas cel mult", minimum_water_amount, "litri de apa.")
</syntaxhighlight>
Explicatie cod:
Acesta este un program Python care calculează timpul necesar pentru evaporarea unei cantități de apă date până la atingerea unei cantități minime.
Programul este compus din două funcții: time_to_reach_minimum_water_level și validate_input.
time_to_reach_minimum_water_level primește trei argumente: initial_water_amount, time_per_evaporation și minimum_water_amount. În primul rând, initializează time_elapsed la 0, care va urmări timpul total care a trecut în timpul procesului de evaporare.
Apoi intră într-un ciclu while care continuă atâta timp cât initial_water_amount este mai mare decât minimum_water_amount. În fiecare iterație a buclei, initial_water_amount este scăzut cu o pătrime (adică initial_water_amount/4) pentru a ține cont de cantitatea de apă care s-a evaporat în intervalul de timp time_per_evaporation. De asemenea, variabila time_elapsed este crescută cu time_per_evaporation. Odată ce initial_water_amount este mai mic sau egal cu minimum_water_amount, bucla se termină și time_elapsed este returnat.
validate_input primește aceiași trei argumente ca time_to_reach_minimum_water_level și verifică dacă fiecare valoare se află între 1 și 1.000.000.000 (inclusiv). Dacă o valoare este în afara acestui interval, funcția returnează False. În caz contrar, returnează True.
În cele din urmă, în partea principală a programului, utilizatorului i se solicită să introducă cantitatea inițială de apă, intervalul de timp per evaporare și cantitatea minimă de apă. Dacă aceste intrări nu îndeplinesc condițiile necesare (verificate de validate_input), se afișează un mesaj de eroare. În caz contrar, programul apelează time_to_reach_minimum_water_level cu intrările date și afișează timpul rezultat împreună cu un mesaj de confirmare.