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[edit | edit source]

Î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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

  • 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[edit | edit source]

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[edit | edit source]

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

Rezolvare[edit | edit source]

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