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
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
Programul citește de la tastatură un șir de cel mult 255 caractere.
Date de ieșire
Programul afișează pe ecran litera mică cel mai des întâlnită în șir.
Restricții și precizări
- - ș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
- Intrare
- In 12 mergem la munte
- Ieșire
- e
Explicație
- Litera e apare în șir de 3 ori. Tot de 3 ori apare și litera m, dar e este prima în ordine alfabetică.
Rezolvare
<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>