3062 - Vas: Difference between revisions
Sinn Erich (talk | contribs) |
Sinn Erich (talk | contribs) |
||
(16 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
== Date de intrare == | == Date de intrare == | ||
Programul citește de la tastatură | 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 == | == Date de ieșire == | ||
Programul va afișa pe ecran, | 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, | 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 | În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse." | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
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 == | == Exemplul 1 == | ||
; | ; Datele de intrare | ||
: | : Introduceti cantitatea initiala de apa (in litri): 100 | ||
; | : Introduceti intervalul de timp (in minute): 15 | ||
: Datele | : 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. | |||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# | #3062 | ||
def | 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: | |||
while | initial_water_amount -= initial_water_amount/4 # amount evaporated | ||
time_elapsed += time_per_evaporation | |||
return time_elapsed | |||
return | |||
def | def validate_input(initial_water_amount, time_per_evaporation, minimum_water_amount): | ||
if | 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 54: | Line 45: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
initial_water_amount = int(input("Introduceti cantitatea initiala de apa (in litri): ")) | |||
if not | time_per_evaporation = int(input("Introduceti intervalul de timp (in minute): ")) | ||
print("Datele | 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: | 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 introduse | print("Dupa", time_elapsed, "minute vor ramane in vas cel mult", minimum_water_amount, "litri de apa.") | ||
print( | |||
</syntaxhighlight> | </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. |
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.