0847 - Cuvinte: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
Line 36: Line 36:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def main():
def main():
    # Citirea șirului de caractere
     sir = input("Introduceti sirul de caractere: ")
     sir = input("Introduceti sirul de caractere: ")


    # Verificarea lungimii șirului
     if len(sir) > 255:
     if len(sir) > 255:
         print("Datele de intrare nu corespund restrictiilor impuse")
         print("Datele de intrare nu corespund restrictiilor impuse")
         return
         return


    # Separarea cuvintelor din șir și stocarea lor într-o listă
     cuvinte = sir.split()
     cuvinte = sir.split()


    # Verificarea numărului de cuvinte
     if len(cuvinte) > 100:
     if len(cuvinte) > 100:
         print("Datele de intrare nu corespund restrictiilor impuse")
         print("Datele de intrare nu corespund restrictiilor impuse")
         return
         return


    # Verificarea lungimii fiecarui cuvant
     for cuvant in cuvinte:
     for cuvant in cuvinte:
         if len(cuvant) > 15:
         if len(cuvant) > 15:
Line 60: Line 55:
     print("Datele de intrare corespund restrictiilor impuse")
     print("Datele de intrare corespund restrictiilor impuse")


    # Inițializarea dicționarului
     frecventa_cuvinte = {}
     frecventa_cuvinte = {}


    # Iterarea prin lista de cuvinte și numărarea frecvenței lor
     for cuvant in cuvinte:
     for cuvant in cuvinte:
         if cuvant in frecventa_cuvinte:
         if cuvant in frecventa_cuvinte:
Line 70: Line 63:
             frecventa_cuvinte[cuvant] = 1
             frecventa_cuvinte[cuvant] = 1


    # Afisarea cuvintelor si frecventei lor in ordine lexicografica
     for cuvant in sorted(frecventa_cuvinte.keys()):
     for cuvant in sorted(frecventa_cuvinte.keys()):
         print(cuvant, frecventa_cuvinte[cuvant])
         print(cuvant, frecventa_cuvinte[cuvant])

Latest revision as of 19:53, 2 January 2024

Cerinţa[edit]

Se dă un șir de caractere format din cuvinte, separate prin spații. Cuvintele conțin doar litere mici ale alfabetului englez. Afișați, în ordine lexicografică, cuvintele din șir și frecvența lor de apariție.

Date de intrare[edit]

Programul citește de la tastatură șirul dat.

Date de ieșire[edit]

Programul va afișa pe ecran câte un cuvânt pe o linie, apoi un spațiu, apoi numărul de apariții ale cuvântului.

Restricţii şi precizări[edit]

  • șirul dat va avea cel mult 255 de caractere și va conține cel mult 100 de cuvinte
  • lungimea unui cuvânt este de cel mult 15 caractere


Exemplul 1[edit]

Intrare
maria are doua pere si ana are doua mere 
Iesire
Datele de intrare corespund restrictiilor impuse
ana 1
are 2
doua 2
maria 1
mere 1
pere 1
si 1

Exemplu 2[edit]

Intrare
abcdefghijklmnop
Iesire
Datele de intrare nu corespund restrictiilor impuse


Rezolvare[edit]

<syntaxhighlight lang="python" line> def main():

   sir = input("Introduceti sirul de caractere: ")
   if len(sir) > 255:
       print("Datele de intrare nu corespund restrictiilor impuse")
       return
   cuvinte = sir.split()
   if len(cuvinte) > 100:
       print("Datele de intrare nu corespund restrictiilor impuse")
       return
   for cuvant in cuvinte:
       if len(cuvant) > 15:
           print("Datele de intrare nu corespund restrictiilor impuse")
           return
   print("Datele de intrare corespund restrictiilor impuse")
   frecventa_cuvinte = {}
   for cuvant in cuvinte:
       if cuvant in frecventa_cuvinte:
           frecventa_cuvinte[cuvant] += 1
       else:
           frecventa_cuvinte[cuvant] = 1
   for cuvant in sorted(frecventa_cuvinte.keys()):
       print(cuvant, frecventa_cuvinte[cuvant])


if __name__ == "__main__":

   main()

</syntaxhighlight>