0138 - Frecventa
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">
- 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>