0482 - Auto
Sursa: [1]
Cerinţa
Gigel se plimbă cu mașina. El parcurge n etape, despre fiecare etapă cunoscându-se durata și viteza constantă de deplasare. Să se determine distanța totală parcursă și viteza medie de deplasare.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi n perechi de numere naturale t v, reprezentând durata și viteza pentru fiecare etapă.
Date de ieșire
Programul afișează pe ecran numerele D VM, reprezentând distanța totală parcursă și viteza medie de deplasare.
Dacă datele sunt introduse corect, programul va rula.
În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".
Restricţii şi precizări
1 ≤ n ≤ 100
pentru fiecare etapă, durata și viteza sunt numere naturale mai mici sau egale cu 100
durata se exprimă în ore, distanța în kilometri, iar viteza în km/h
Exemplul 1
- Intrare
- 3
- 2 65
- 3 70
- 1 55
- Ieșire
- 395 65.83
Rezolvare
<syntaxhighlight lang="python" line>
- 0482
def calc_total_distance_and_time(n):
distance = 0 time = 0 for i in range(n): t, v = map(int, input().split()) if t < 1 or t > 100 or v < 1 or v > 100: raise ValueError("Duration and speed must be between 1 and 100") distance += t * v time += t return distance, time
def calc_avg_speed(distance, time):
return distance / time
if __name__ == '__main__':
n = int(input("Introdu numărul de măsurători de viteză: ")) if n < 1 or n > 100: raise ValueError("Numerele trebuie sa fie intre 1 si 100") distance, time = calc_total_distance_and_time(n) avg_speed = calc_avg_speed(distance, time) print(distance, avg_speed)
</syntaxhighlight>
Explicatie cod:
Această implementare constă în două funcții care calculează distanța totală și timpul total pe baza unui număr dat de măsurători de viteză, apoi calculează viteza medie și o afișează.
Funcția calc_total_distance_and_time(n) primește numărul de măsurători de viteză și calculează distanța totală și timpul total. Aceasta folosește un loop for pentru a parcurge fiecare măsurătoare de viteză și pentru a aduna produsul dintre durata și viteza fiecărei măsurători la distanța totală și durata la timpul total.
Funcția calc_avg_speed(distance, time) primește distanța totală și timpul total și calculează viteza medie prin împărțirea distanței totale la timpul total.
În funcția principală, numărul de măsurători de viteză este citit de la tastatură și validat pentru a se asigura că este între 1 și 100. Apoi, calc_total_distance_and_time() este apelată pentru a calcula distanța totală și timpul total, iar apoi calc_avg_speed() este apelată pentru a calcula viteza medie. Distanța totală și viteza medie sunt afișate. Pentru fiecare măsurătoare, durata și viteza sunt validate pentru a se asigura că sunt între 1 și 100. Dacă nu sunt, se generează o excepție de valoare.