0138 - Frecventa: Difference between revisions
No edit summary |
No edit summary |
||
Line 18: | Line 18: | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
# 0138 Frecventa | # 0138 Frecventa | ||
def verificare(sir_chr): | def verificare(sir_chr): # functia de validare a datelor de intrare | ||
for caracter in sir_chr: | for caracter in sir_chr: | ||
if 122 < ord(caracter) < 97: | if 122 < ord(caracter) < 97: | ||
if ord(caracter) != ord(" "): | if ord(caracter) != ord(" "): # caracterul trebuie sa fie litera sau spatiu | ||
return False | return False | ||
Line 31: | Line 30: | ||
def frecventa(sir): | def frecventa(sir): | ||
nr_alfabet = [] | nr_alfabet = [] # vectorul de frecventa in care numaram fiecare litera din alfabet | ||
for i in range(123): | for i in range(123): | ||
nr_alfabet.append(0) | nr_alfabet.append(0) | ||
for caracter in sir: | for caracter in sir: # numaram fiecare litera din sir in vectorul de frecventa | ||
nr_alfabet[ord(caracter)] += 1 | nr_alfabet[ord(caracter)] += 1 | ||
max_aparitii = max(nr_alfabet[97:]) | max_aparitii = max(nr_alfabet[97:]) # aflam numarul maxim de aparitii | ||
for i in range(len(nr_alfabet)): | for i in range(len(nr_alfabet)): | ||
if nr_alfabet[i] == max_aparitii and i >= 97: | 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)) | print(chr(i)) | ||
return | return | ||
Line 48: | Line 47: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
sir_caractere = input("Introduceti sirul de caractere: ") | sir_caractere = input("Introduceti sirul de caractere: ") # citirea sirului | ||
if verificare(sir_caractere): | if verificare(sir_caractere): # verificarea datelor de intrare | ||
print("Datele introduse corespund restricțiilor impuse.") | print("Datele introduse corespund restricțiilor impuse.") | ||
frecventa(sir_caractere) | frecventa(sir_caractere) # apelul functiei de rezolvare | ||
else: | else: | ||
print("Datele introduse nu corespund restricțiilor impuse.") | print("Datele introduse nu corespund restricțiilor impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 13:19, 4 May 2023
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>