0482 - Auto

From Bitnami MediaWiki

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, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează distanța totală parcursă și viteza medie de deplasare .

În caz contrar, 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

Datele de intrare
Introdu numărul de măsurători de viteză:
3
2 65
3 70
1 55
Datele de ieșire
Datele sunt introduse corect.
395 65.83


Rezolvare

<syntaxhighlight lang="python" line>

  1. 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("Datele nu corespund restricțiilor impuse.")
       distance += t * v
       time += t
   print("Datele sunt introduse corect.")
   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("Datele nu corespund restricțiilor impuse.")
   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.