2304 - Cuvinte 7: Difference between revisions

From Bitnami MediaWiki
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.
== Exemplu 1 ==
== 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
== Exemplu 2 ==
 
== 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.