1868 - Prosirx
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>