2304 - Cuvinte 7: Difference between revisions
Pagină nouă: == Cerinta == Scrieţi un program care citeşte de la tastatură, în această ordine, un număr natural '''n''', apoi n cuvinte, separate prin Enter, urmate de un număr natural '''k'''. Numerele citite sunt din intervalul '''[1,20]''', iar fiecare cuvânt este format din cel mult '''20''' de caractere, numai litere mici ale alfabetului englez. Cel puţin unul dintre cuvinte are '''k''' litere. Programul construiește în memorie, apoi afișează pe ecran, un șir care să... |
|||
(One intermediate revision by the same user not shown) | |||
Line 3: | Line 3: | ||
Programul construiește în memorie, apoi afișează pe ecran, un șir care să cuprindă cuvintele citite, separate prin câte un spațiu, astfel încât toate cele care au '''k''' litere să ocupe primele poziţii, iar celelalte să se regăsească în continuarea acestora, într-o ordine oarecare. | Programul construiește în memorie, apoi afișează pe ecran, un șir care să cuprindă cuvintele citite, separate prin câte un spațiu, astfel încât toate cele care au '''k''' litere să ocupe primele poziţii, iar celelalte să se regăsească în continuarea acestora, într-o ordine oarecare. | ||
== | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
5 | 5 | ||
Line 15: | Line 15: | ||
Datele de intrare corespund restrictiilor impuse | Datele de intrare corespund restrictiilor impuse | ||
am un de cires mai | am un de cires mai | ||
== | |||
== Exemplul 2 == | |||
; Intrare | ; Intrare | ||
3 | 3 |
Latest revision as of 17:27, 25 December 2023
Cerinta[edit | edit source]
Scrieţi un program care citeşte de la tastatură, în această ordine, un număr natural n, apoi n cuvinte, separate prin Enter, urmate de un număr natural k. Numerele citite sunt din intervalul [1,20], iar fiecare cuvânt este format din cel mult 20 de caractere, numai litere mici ale alfabetului englez. Cel puţin unul dintre cuvinte are k litere.
Programul construiește în memorie, apoi afișează pe ecran, un șir care să cuprindă cuvintele citite, separate prin câte un spațiu, astfel încât toate cele care au k litere să ocupe primele poziţii, iar celelalte să se regăsească în continuarea acestora, într-o ordine oarecare.
Exemplul 1[edit | edit source]
- Intrare
5 am un cires de mai 2
- Iesire
Datele de intrare corespund restrictiilor impuse am un de cires mai
Exemplul 2[edit | edit source]
- Intrare
3 da acestcuvantesteunulfoartelungdoarpentrucontext 2 2
- Iesire
Datele de intrare nu corespund restrictiilor impuse
<syntaxhighlight lang="python" line> def main():
# Citirea numărului n de la tastatură n = int(input().strip())
# Citirea cuvintelor de la tastatură cuvinte = [input().strip() for _ in range(n)]
# Citirea numărului k de la tastatură k = int(input().strip())
# Verifică dacă datele de intrare respectă restricțiile if n < 1 or n > 20 or k < 1 or k > 20 or any(len(cuvant) > 20 or not cuvant.islower() for cuvant in cuvinte): print("Datele de intrare nu corespund restrictiilor impuse") return
print("Datele de intrare corespund restrictiilor impuse")
# Separarea cuvintelor în funcție de lungimea lor cuvinte_k = [cuvant for cuvant in cuvinte if len(cuvant) == k] cuvinte_altele = [cuvant for cuvant in cuvinte if len(cuvant) != k]
# Construirea și afișarea șirului rezultat sir = ' '.join(cuvinte_k + cuvinte_altele) print(sir)
if __name__ == "__main__":
main()
</syntaxhighlight>
Explicatie[edit | edit source]
Există și alte soluții corecte.