0482 - Auto: Diferență între versiuni

De la Universitas MediaWiki
Linia 9: Linia 9:
Programul afișează pe ecran numerele '''D VM''', reprezentând distanța totală parcursă și viteza medie de deplasare.
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.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează  [ Ce cere programul ] .  


În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: ''' "Datele nu corespund restricțiilor impuse.".'''
Î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 ==

Versiunea de la data 25 aprilie 2023 08:47

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ă [ Ce cere programul ] .

Î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

Intrare
3
2 65
3 70
1 55
Ieșire
395 65.83


Rezolvare

#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)

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.