0101 - Sortare Cuvinte

From Bitnami MediaWiki
Revision as of 13:20, 14 December 2023 by AntalKrisztian (talk | contribs) (Pagină nouă: == Cerinţa == Să se scrie un program care citește o propoziţie şi afişează cuvintele din propoziţie ordonate alfabetic. == Date de intrare == Fișierul de intrare '''sortcuvin.txt''' conține pe prima linie o propoziție alcătuită din litere mici ale alfabetului englez și spații. == Date de ieşire == Fișierul de ieșire '''sortcuvout''' va conține cuvintele din propoziție, ordonate alfabetic, fiecare pe câte o linie. == Restricții și precizări == * propozi...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa[edit | edit source]

Să se scrie un program care citește o propoziţie şi afişează cuvintele din propoziţie ordonate alfabetic.

Date de intrare[edit | edit source]

Fișierul de intrare sortcuvin.txt conține pe prima linie o propoziție alcătuită din litere mici ale alfabetului englez și spații.

Date de ieşire[edit | edit source]

Fișierul de ieșire sortcuvout va conține cuvintele din propoziție, ordonate alfabetic, fiecare pe câte o linie.

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

  • propoziția va conține cel mult 250 de caractere;
  • fiecare cuvânt din propoziție are cel mult 20 litere

Exemplul 1[edit | edit source]

sortcuvin.txt
dreptunghiul este un paralelogram cu un unghi drept
sortcuvout.txt
Datele de intrare corespund restrictiilor impuse.
cu
drept
dreptunghiul
este
paralelogram
un
un
unghi


Exemplul 2[edit | edit source]

sortcuvin.txt
acestcuvantaremaimulteliteredecatestepermis
sortcuvout.txt
Datele de intrare nu corespund restrictiilor impuse.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. functia de validare verifica daca datele de intrare sunt in intervalul specificat

def validare(propozitie_validare):

   # verificam daca lungimea propozitiei este in intervalul 0-250
   if len(propozitie_validare) <= 0 or len(propozitie_validare) > 250:
       raise ValueError  # ridicam o eroare daca lungimea propozitiei nu este in intervalul 0-250
   for cuvant_validare in propozitie_validare.split():    # parcurgem lista de cuvinte
       # verificam daca lungimea cuvantului este mai mica sau egala cu 20
       if len(cuvant_validare) > 20:
           raise ValueError
       # verificam daca cuvantul contine doar litere mici ale alfabetului englezesc
       if not cuvant_validare.islower():
           raise ValueError
       # verificam daca cuvantul contine numere
       if any(char.isdigit() for char in cuvant_validare):
           raise ValueError
   file_out.write("Datele de intrare corespund restrictiilor impuse.\n")


  1. functia sort_words sorteaza cuvintele in functie de ordinea alfabetica

def sort_words(cuvinte):

   # sortam cuvintele in functie de ordinea alfabetica
   cuvinte.sort()
   return cuvinte


if __name__ == '__main__':

   file_in = open("sortcuvin.txt", "r")
   file_out = open("sortcuvout.txt", "w")
   try:
       # citim propozitia
       propozitie_main = file_in.readline().strip()
       # validam datele de intrare
       validare(propozitie_main)
       # sortam cuvintele in functie de ordinea alfabetica
       cuvinte_sortate = sort_words(propozitie_main.split())
       # scriem cuvintele sortate in fisierul de iesire
       for cuvant in cuvinte_sortate:
           file_out.write(cuvant + '\n')
   # daca datele de intrare nu sunt valide, afisam un mesaj de eroare
   except ValueError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse.")
   # daca datele de intrare sunt incomplete, afisam un mesaj de eroare
   except IndexError:
       file_out.write("Datele de intrare nu corespund restrictiilor impuse.")


</syntaxhighlight>