0138 - Frecventa

From Bitnami MediaWiki
Revision as of 13:19, 4 May 2023 by Hotico Iulia Denisa (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

Să se scrie un program care citește un șir de caractere și afișează litera mică cel mai des întâlnită în șir.

Date de intrare[edit | edit source]

Programul citește de la tastatură un șir de cel mult 255 caractere.

Date de ieșire[edit | edit source]

Programul afișează pe ecran litera mică cel mai des întâlnită în șir.

Restricții și precizări[edit | edit source]

- șirul conține litere mari și mici ale alfabetului englez, cifre și spații
- dacă șirul conține mai multe litere cu număr maxim de apariții, se va fișa prima în ordine alfabetică

Exemplu 1[edit | edit source]

Intrare
In 12 mergem la munte
Ieșire
e


Explicație[edit | edit source]

Litera e apare în șir de 3 ori. Tot de 3 ori apare și litera m, dar e este prima în ordine alfabetică.


Rezolvare[edit | edit source]

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

  1. 0138 Frecventa

def verificare(sir_chr): # functia de validare a datelor de intrare

   for caracter in sir_chr:
       if 122 < ord(caracter) < 97:
           if ord(caracter) != ord(" "):   # caracterul trebuie sa fie litera sau spatiu
               return False
   return True


def frecventa(sir):

   nr_alfabet = []     # vectorul de frecventa in care numaram fiecare litera din alfabet
   for i in range(123):
       nr_alfabet.append(0)
   for caracter in sir:                    # numaram fiecare litera din sir in vectorul de frecventa
       nr_alfabet[ord(caracter)] += 1
   max_aparitii = max(nr_alfabet[97:])     # aflam numarul maxim de aparitii
   for i in range(len(nr_alfabet)):
       if nr_alfabet[i] == max_aparitii and i >= 97:   
           # parcurgem sirul, daca gasim caracterul cu numar maxim de aparitii si e o litera il afisam
           print(chr(i))
           return


if __name__ == '__main__':

   sir_caractere = input("Introduceti sirul de caractere: ")       # citirea sirului
   if verificare(sir_caractere):   # verificarea datelor de intrare
       print("Datele introduse corespund restricțiilor impuse.")
       frecventa(sir_caractere)        # apelul functiei de rezolvare
   else:
       print("Datele introduse nu corespund restricțiilor impuse.")
       

</syntaxhighlight>