1868 - Prosirx

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se consideră un text format din cel mult 200 de caractere litere mici și spații. Cuvintele din text sunt separate prin unul sau mai multe spații. Scrieti un program care citește textul și care:

a) determină numărul de consoane din textul citit;

b) înlocuiește prima literă a fiecărui cuvânt din textul citit cu litera X (mare);

c) modifică textul citit prin aranjarea în ordine lexicografică a tuturor cuvintelor din text și separarea lor prin câte un singur spațiu.

Date de intrare[edit | edit source]

Fișierul de intrare prosirxin.txt conține pe prima linie textul.

Date de ieșire[edit | edit source]

Fișierul de ieșire prosirxout.txt va conține:

- pe prima linie răspunsul la cerința a)

- pe a doua linie răspunsul la cerința b)

- pe a treia linie răspunsul la cerința c)

Restricţii şi precizări[edit | edit source]

  • textul este format din cel mult 200 de caractere, doar litere mici sau spații

Exemplu 1[edit | edit source]

prosirxin.txt
oana   este    la scoala 
prosirxout.txt
Datele de intrare corespund restrictiilor impuse
7 
Xana   Xste    Xa Xcoala 
este la oana scoala 


Exemplu 2[edit | edit source]

prosirxin.txt
oana   este    la scoala999
prosirxout.txt
Datele de intrare nu corespund restrictiilor impuse


Explicație[edit | edit source]

Sunt 7 consoane în textul citit.

Rezolvare[edit | edit source]

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

   # Analizează textul și returnează numărul de consoane,
   # textul cu prima literă a fiecărui cuvânt înlocuită cu 'X'
   # și textul cu cuvintele aranjate în ordine lexicografică
   consoane = 'bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ'
   vocale = 'aeiouAEIOU'
   nr_consoane = sum(c in consoane for c in text)
   cuvinte = text.split()
   cuvinte_x = ['X' + cuvant[1:] if cuvant[0] in vocale else cuvant for cuvant in cuvinte]
   cuvinte_sortate = sorted(cuvinte)
   return nr_consoane, ' '.join(cuvinte_x), ' '.join(cuvinte_sortate)


def main():

   with open('prosirxin.txt', 'r') as fin, open('prosirxout.txt', 'w') as fout:
       text = fin.readline().strip()
       # Verifică dacă textul respectă restricțiile
       if len(text) > 200 or not all(c.isalpha() or c.isspace() for c in text):
           fout.write("Datele de intrare nu corespund restrictiilor impuse\n")
           return
       fout.write("Datele de intrare corespund restrictiilor impuse\n")
       # Analizează textul și scrie rezultatele în fișierul de ieșire
       nr_consoane, text_x, text_sortat = analyze_text(text)
       fout.write(str(nr_consoane) + '\n')
       fout.write(text_x + '\n')
       fout.write(text_sortat + '\n')


if __name__ == "__main__":

   main()


</syntaxhighlight>