0795 - Inaltimi 1

From Bitnami MediaWiki
Revision as of 20:11, 23 April 2023 by Adina Timiș (talk | contribs) (→‎Rezolvare)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Într-o clasă sunt n elevi, numerotați de la 1 la n, băieți și fete, pentru fiecare dintre ei cunoscându-se înălțimea, exprimată în centimetri. Să se determine câte fete sunt mai scunde decât cel mai scund băiat și câți băieți sunt mai înalți decât cea mai înaltă fată.

Date de intrare

Programul citește de la tastatură numărul n, iar apoi n caracteristicile celor n elevi, astfel: o literă (B sau F), care definește sexul elevului, și înălțimea acestuia, un număr natural nenul.

Date de ieșire

Programul va afișa pe ecran două numere A B, separate printr-un spațiu, însemnând: A – numărul de fete care sunt mai scunde decât cel mai scund băiat și B – numărul de băieți care sunt mai înalți decât cea mai înaltă fată.

Restricții și precizări

  • 1 ≤ n ≤ 100;
  • înălțimile elevilor vor fi mai mici decât 200;
  • se garantează că există cel puțin o fată și cel puțin un băiat;

Exemplul 1

Intrare
5
B 176
F 160
F 165
B 180
B 179
Ieșire
Datele de intrare corespund restricțiilor impuse.
2 3

Exemplul 2

Intrare
0
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

<syntaxhighlight lang="python" line="1">

  1. 0795 - Inaltimi 1

def inaltimi(n, data):

   # inițializarea unor variabile pentru înălțimea maximă a fetelor, înălțimea minimă a băieților,
   # numărul de fete și numărul de băieți
   max_girl = 0
   min_boy = 201
   count_girls = 0
   count_boys = 0
   # parcurgerea fiecărei perechi (sex, înălțime), din listă
   for sex, height in data:
       # dacă sexul persoanei este feminin
       if sex == 'F':
           # verificarea dacă înălțimea este mai mică decât înălțimea minimă a băieților
           # și dacă da, incrementarea numărului de fete
           if height < min_boy:
               count_girls += 1
           # verificarea dacă înălțimea este mai mare decât înălțimea maximă a fetelor
           # și dacă e așa, actualizarea valorii înălțimii maxime a fetelor
           if height > max_girl:
               max_girl = height
       # dacă sexul persoanei este masculin (M)
       else:
           # verificarea dacă înălțimea este mai mare decât înălțimea maximă a fetelor
           # incrementarea numărului de băieți, în caz afirmativ
           if height > max_girl:
               count_boys += 1
           # verificarea dacă înălțimea este mai mică decât înălțimea minimă a băieților
           # la fel, actualizarea valorii înălțimii minime a băieților
           if height < min_boy:
               min_boy = height
   # returnarea numărului de fete și numărului de băieți
   return count_girls, count_boys


if __name__ == "__main__":

   # citirea numărului de elevi
   n = int(input())
   # inițializarea listei
   data = []
   # verificarea restricțiile
   if n >= 1 and n <= 100:
       # citirea datelor pentru fiecare elev și adăugarea lor la listă
       for i in range(n):
           sex, height = input().split()
           height = int(height)
           # verificarea restricțiilor
           if height < 200:
               data.append((sex, height))
           else:
               print("Datele de intrare nu corespund restricțiilor impuse.")
               exit()
       # dacă lista de date nu este goală și apelarea funcției main
       if data:
           print("Datele de intrare corespund restricțiilor impuse.")
           result = inaltimi(n, data)
           print("Numarul de fete:", result[0])
           print("Numarul de baieti:", result[1])
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>