1519 - Dans: Difference between revisions
Sinn Erich (talk | contribs) |
Sinn Erich (talk | contribs) |
||
Line 86: | Line 86: | ||
print("Cel mai mare timp alocat unui dans este:", max_time) | print("Cel mai mare timp alocat unui dans este:", max_time) | ||
print("Cel mai mic timp alocat unui dans este:", min_time) | print("Cel mai mic timp alocat unui dans este:", min_time) | ||
n = int(input("Introduceți numărul de trupe: ")) | |||
trupe = read_input(n) | if __name__ == '__main__': | ||
total_time, max_time, min_time, total_kids = compute_statistics(trupe) | n = int(input("Introduceți numărul de trupe: ")) | ||
print_statistics(total_time, max_time, min_time, total_kids) | if n < 1 or n > 100: | ||
print("Numărul de trupe trebuie să fie între 1 și 100.") | |||
exit() | |||
trupe = read_input(n) | |||
total_time, max_time, min_time, total_kids = compute_statistics(trupe) | |||
print_statistics(total_time, max_time, min_time, total_kids) | |||
Revision as of 17:33, 2 April 2023
Sursa: [1]
Cerinţa
De 1 Iunie – Ziua Copilului se organizează un spectacol de dans cu şi pentru copii. Acesta este programat să se desfăşoare în intervalul orar 10.30 -12.00.
În spectacol se înscriu n trupe de dans, iar pentru fiecare trupă se cunoaşte timpul necesar realizării dansului în minute şi numărul de copii din trupa.
Cunoscând n, numărul de trupe înscrise, cele n perechi (t,c) unde t reprezintă timpul în minute şi c numărul de copii din trupa scrieţi un program care:
a) Verifică dacă toate cele n echipe înscrise în spectacol se încadrează în timpul alocat spectacolului şi afişează mesajul NU dacă timpul este mai mare decât cel programat, în caz contrar afişează mesajul DA. b) Calculează cu câte minute este programul incomplet sau depăşit. c) Calculează câţi copii au fost implicaţi în realizarea spectacolului. d) Calculează care este cel mai mare şi cel mai mic timp alocat unui dans.
Date de intrare
Pe prima linie a programul se afla n, numărul de trupe înscrise, iar pe următoarele linii cele n perechi de forma de mai sus.
Date de ieșire
Datele conform cerintelor a) – d) se vor afişa în program, răspunsul fiecărei cerinţe fiind scris pe câte o linie. La punctul d) cele 2 valori se vor despărţi prin spaţiu.
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
5 ≤ t ≤ 15
Exemplul 1
- Intrare
- 8
- 10 6
- 8 5
- 9 6
- 12 10
- 10 12
- 5 6
- 7 8
- 9 8
- Ieșire
- DA
- 20
- 61
- 12 5
Rezolvare
<syntaxhighlight lang="python" line>
- 1519
def read_input(n):
""" Citeste datele de intrare pentru cele n trupe si returneaza o lista de tuple (t, c) reprezentand timpul si numarul de copii pentru fiecare trupa. """ trupe = [] for i in range(n): t, c = map(int, input( f"Introduceți timpul și numărul de copii pentru trupa {i + 1} (în această ordine): ").split()) trupe.append((t, c)) return trupe
def compute_statistics(trupe):
""" Calculeaza si returneaza timpul total, cel mai mare si cel mai mic timp alocat unui dans si numarul total de copii implicati in spectacol. """ total_time = sum(t for t, c in trupe) max_time = max(t for t, c in trupe) min_time = min(t for t, c in trupe) total_kids = sum(c for t, c in trupe) return total_time, max_time, min_time, total_kids
def print_statistics(total_time, max_time, min_time, total_kids):
""" Afiseaza timpul total, cel mai mare si cel mai mic timp alocat unui dans si numarul total de copii implicati in spectacol. """ if total_time > 90: print("NU") else: print("DA") minutes_incomplete_or_exceeded = abs(90 - total_time) print("Programul este incomplet sau depășit cu {} minute".format(minutes_incomplete_or_exceeded)) print("Numărul total de copii implicați este:", total_kids) print("Cel mai mare timp alocat unui dans este:", max_time) print("Cel mai mic timp alocat unui dans este:", min_time)
if __name__ == '__main__':
n = int(input("Introduceți numărul de trupe: ")) if n < 1 or n > 100: print("Numărul de trupe trebuie să fie între 1 și 100.") exit() trupe = read_input(n) total_time, max_time, min_time, total_kids = compute_statistics(trupe) print_statistics(total_time, max_time, min_time, total_kids)
</syntaxhighlight>
Explicatie cod:
Acest cod este împărțit în trei funcții: read_input(n), compute_statistics(trupe) și print_statistics(total_time, max_time, min_time, total_kids).
Funcția read_input(n) primește numărul n de trupe și citește de la tastatură timpul și numărul de copii pentru fiecare trupă, creând o listă de tuple care conține aceste informații pentru fiecare trupă. Această listă este returnată.
Funcția compute_statistics(trupe) primește lista de tuple creată de funcția read_input(n) și calculează timpul total, cel mai mare și cel mai mic timp alocat unui dans și numărul total de copii implicați în spectacol. Aceste informații sunt returnate sub formă de tuple.
Funcția print_statistics(total_time, max_time, min_time, total_kids) primește informațiile calculate de funcția compute_statistics(trupe) și le afișează în formatul specificat, împreună cu un răspuns "DA" sau "NU" în funcție de faptul că timpul total este mai mic sau mai mare decât 90 de minute.
În programul principal, utilizatorul este întâi întrebat să introducă numărul de trupe. Apoi, se apelează funcția read_input(n) pentru a citi informațiile pentru fiecare trupă și a crea lista de tuple corespunzătoare. Această listă este apoi pasată funcției compute_statistics(trupe), care calculează informațiile necesare și le returnează sub formă de tuple. Această tuplă este apoi pasată funcției print_statistics(total_time, max_time, min_time, total_kids), care afișează informațiile în formatul specificat.