3166 - Vas 1: Difference between revisions
Sinn Erich (talk | contribs) |
|||
(5 intermediate revisions by one other user not shown) | |||
Line 4: | Line 4: | ||
== Date de intrare == | == Date de intrare == | ||
Programul citește de la tastatură patru numere naturale '''apa_initiala, | Programul citește de la tastatură patru numere naturale '''apa_initiala,timp_evaporare,apa_minima,rata_evaporare'''. | ||
== Date de ieșire == | == Date de ieșire == | ||
Line 14: | Line 14: | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
1 ≤ '''apa_initiala, | 1 ≤ '''apa_initiala,timp_evaporare,apa_minima''' ≤ 1.000.000.000 | ||
2 ≤ '''rata_evaporare''' ≤ 100 | 2 ≤ '''rata_evaporare''' ≤ 100 | ||
Line 20: | Line 20: | ||
== Exemplul 1 == | == Exemplul 1 == | ||
; Datele de intrare | ; Datele de intrare | ||
: | :Introduceti X T Y I, separate prin spatiu: | ||
: 100 | : 100 15 20 5 | ||
; Datele de ieșire | ; Datele de ieșire | ||
: Datele sunt introduse corect. | : Datele sunt introduse corect. | ||
: Dupa | :Dupa 210 minute, vor ramane in vas cel mult 20 litri de apa | ||
<br> | <br> | ||
Line 36: | Line 30: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#3166 | #3166 | ||
def calculate_remaining_water_time( | def calculate_remaining_water_time(apa_initiala, timp_evaporare, apa_minima, rata_evaporare): | ||
remaining_water = | remaining_water = apa_initiala | ||
elapsed_time = 0 | elapsed_time = 0 | ||
while remaining_water > | while remaining_water>rata_evaporare: | ||
evaporated_water = remaining_water / | evaporated_water = remaining_water / rata_evaporare | ||
remaining_water -= evaporated_water | remaining_water -= evaporated_water | ||
elapsed_time += | elapsed_time += timp_evaporare | ||
return elapsed_time | return elapsed_time | ||
def validate_input( | def validate_input(apa_initiala, timp_evaporare, apa_minima, rata_evaporare): | ||
if not (1 <= | if not (1 <= apa_initiala <= 1000000000 and 1 <= timp_evaporare <= 1000000000 and 1 <= apa_minima <= 1000000000 and 2 <= rata_evaporare <= 100): | ||
return False | return False | ||
return True | return True | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
apa_initiala, timp_evaporare, apa_minima, rata_evaporare = map(int, input("Introduceti X T Y I, separate prin spatiu: ").split()) | |||
if not validate_input( | if not validate_input(apa_initiala, timp_evaporare, apa_minima, rata_evaporare): | ||
print("Datele introduse nu | print("Datele introduse nu corespund restrictiilor impuse.") | ||
else: | else: | ||
elapsed_time = calculate_remaining_water_time( | elapsed_time = calculate_remaining_water_time(apa_initiala, timp_evaporare, apa_minima, rata_evaporare) | ||
print("Datele introduse | print("Datele sunt introduse corect.") | ||
print("Dupa", elapsed_time, "minute, vor ramane in vas cel mult", | print("Dupa", elapsed_time, "minute, vor ramane in vas cel mult", apa_minima, "litri de apa") | ||
</syntaxhighlight> | </syntaxhighlight> | ||
'''Explicatie cod:''' | '''Explicatie cod:''' | ||
Acest cod | Acest cod are rolul de a calcula timpul necesar pentru ca cantitatea de apa dintr-un vas sa ajunga la o cantitate minima dupa evaporare, pe baza datelor de intrare: cantitatea initiala de apa din vas, timpul de evaporare pentru fiecare unitate de apa, cantitatea minima de apa pe care dorim sa o lasam in vas si rata de evaporare. | ||
Funcția | Funcția calculate_remaining_water_time primește ca parametri cantitatea inițială de apă, timpul de evaporare pentru fiecare unitate de apă, cantitatea minimă de apă pe care dorim să o lăsăm în vas și rata de evaporare. Ea calculează timpul necesar pentru ca cantitatea de apă din vas să ajungă la cantitatea minimă prin scăderea continuă a cantității de apă evaporată de rata de evaporare. | ||
Funcția validate_input( | Funcția validate_input primește ca parametri datele de intrare și returnează True dacă acestea respectă restricțiile impuse (cantitățile de apă trebuie să fie între 1 și 1.000.000.000, timpul de evaporare între 1 și 1.000.000.000, cantitatea minimă de apă între 1 și 1.000.000.000 și rata de evaporare între 2 și 100), altfel returnează False. | ||
În secțiunea principală, se cere utilizatorului să introducă cantitatea inițială de apă din vas, timpul de evaporare pentru fiecare unitate de apă, cantitatea minimă de apă pe care dorim să o lăsăm în vas și rata de evaporare. Se validează datele de intrare cu ajutorul funcției validate_input, iar dacă acestea sunt valide, se calculează timpul necesar pentru evaporare cu ajutorul funcției calculate_remaining_water_time și se afișează rezultatul. În caz contrar, se afișează un mesaj de eroare. |
Latest revision as of 20:33, 30 April 2023
Sursa: [1]
Cerinţa[edit | edit source]
Într-un vas sunt apa_initiala litri de apă (apa_initiala>0). După fiecare t minute, apa_initiala\rata_evaporare din cantitatea de apă rămasă se evaporă. Să se determine după câte minute vor rămâne în vas cel mult apa_minima litri de apă.
Date de intrare[edit | edit source]
Programul citește de la tastatură patru numere naturale apa_initiala,timp_evaporare,apa_minima,rata_evaporare.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran numărul de minute necesare astfel încât in vas sa rămână cel mult apa_minima litri de apa.
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 apa_minima 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 ≤ apa_initiala,timp_evaporare,apa_minima ≤ 1.000.000.000
2 ≤ rata_evaporare ≤ 100
Exemplul 1[edit | edit source]
- Datele de intrare
- Introduceti X T Y I, separate prin spatiu:
- 100 15 20 5
- Datele de ieșire
- Datele sunt introduse corect.
- Dupa 210 minute, vor ramane in vas cel mult 20 litri de apa
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3166
def calculate_remaining_water_time(apa_initiala, timp_evaporare, apa_minima, rata_evaporare):
remaining_water = apa_initiala elapsed_time = 0 while remaining_water>rata_evaporare: evaporated_water = remaining_water / rata_evaporare remaining_water -= evaporated_water elapsed_time += timp_evaporare return elapsed_time
def validate_input(apa_initiala, timp_evaporare, apa_minima, rata_evaporare):
if not (1 <= apa_initiala <= 1000000000 and 1 <= timp_evaporare <= 1000000000 and 1 <= apa_minima <= 1000000000 and 2 <= rata_evaporare <= 100): return False return True
if __name__ == '__main__':
apa_initiala, timp_evaporare, apa_minima, rata_evaporare = map(int, input("Introduceti X T Y I, separate prin spatiu: ").split()) if not validate_input(apa_initiala, timp_evaporare, apa_minima, rata_evaporare): print("Datele introduse nu corespund restrictiilor impuse.") else: elapsed_time = calculate_remaining_water_time(apa_initiala, timp_evaporare, apa_minima, rata_evaporare) print("Datele sunt introduse corect.") print("Dupa", elapsed_time, "minute, vor ramane in vas cel mult", apa_minima, "litri de apa")
</syntaxhighlight>
Explicatie cod:
Acest cod are rolul de a calcula timpul necesar pentru ca cantitatea de apa dintr-un vas sa ajunga la o cantitate minima dupa evaporare, pe baza datelor de intrare: cantitatea initiala de apa din vas, timpul de evaporare pentru fiecare unitate de apa, cantitatea minima de apa pe care dorim sa o lasam in vas si rata de evaporare.
Funcția calculate_remaining_water_time primește ca parametri cantitatea inițială de apă, timpul de evaporare pentru fiecare unitate de apă, cantitatea minimă de apă pe care dorim să o lăsăm în vas și rata de evaporare. Ea calculează timpul necesar pentru ca cantitatea de apă din vas să ajungă la cantitatea minimă prin scăderea continuă a cantității de apă evaporată de rata de evaporare.
Funcția validate_input primește ca parametri datele de intrare și returnează True dacă acestea respectă restricțiile impuse (cantitățile de apă trebuie să fie între 1 și 1.000.000.000, timpul de evaporare între 1 și 1.000.000.000, cantitatea minimă de apă între 1 și 1.000.000.000 și rata de evaporare între 2 și 100), altfel returnează False.
În secțiunea principală, se cere utilizatorului să introducă cantitatea inițială de apă din vas, timpul de evaporare pentru fiecare unitate de apă, cantitatea minimă de apă pe care dorim să o lăsăm în vas și rata de evaporare. Se validează datele de intrare cu ajutorul funcției validate_input, iar dacă acestea sunt valide, se calculează timpul necesar pentru evaporare cu ajutorul funcției calculate_remaining_water_time și se afișează rezultatul. În caz contrar, se afișează un mesaj de eroare.