1519 - Dans: Difference between revisions

From Bitnami MediaWiki
Sinn Erich (talk | contribs)
Sinn Erich (talk | contribs)
Line 82: Line 82:
     """
     """
     if total_time > 90:
     if total_time > 90:
        print("Datele introduse sunt corecte.")
         print("NU")
         print("NU")
     else:
     else:
        print("Datele introduse sunt corecte.")
         print("DA")
         print("DA")
     minutes_incomplete_or_exceeded = abs(90 - total_time)
     minutes_incomplete_or_exceeded = abs(90 - total_time)
     print("Programul este incomplet sau depășit cu {} minute".format(minutes_incomplete_or_exceeded))
     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("Numărul total de copii implicați este:", total_kids)
Line 93: Line 96:
if __name__ == '__main__':
if __name__ == '__main__':
     n = int(input("Introduceți numărul de trupe: "))
     n = int(input("Introduceți numărul de trupe: "))
     if n < 1 or n > 100:
     if not 1 <= n <= 100:
         print("Numărul de trupe trebuie să fie între 1 și 100.")
         print("Datele nu corespund restricțiilor impuse.")
         exit()
         exit()
     trupe = read_input(n)
     trupe = read_input(n)
     total_time, max_time, min_time, total_kids = compute_statistics(trupe)
     total_time, max_time, min_time, total_kids = compute_statistics(trupe)
     print_statistics(total_time, max_time, min_time, total_kids)
     print_statistics(total_time, max_time, min_time, total_kids)





Revision as of 09:49, 25 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.

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi pe un rând nou afișează cerintele de mai sus.

În caz contrar, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."

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>

  1. 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("Datele introduse sunt corecte.")
       print("NU")
   else:
       print("Datele introduse sunt corecte.")
       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 not 1 <= n <= 100:
       print("Datele nu corespund restricțiilor impuse.")
       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.