2681 - Invers Max: Difference between revisions
Pagină nouă: == Cerința == Se citește un șir de caractere reprezentând o propoziție care conține litere mari și mici ale alfabetului englez, spații, cifre și alte simboluri. În cele ce urmează, considerăm cuvânt orice secvență delimitată de spații ce conține cel puțin o literă. Se se afișeze șirul citit astfel încât cuvintele de lungime maximă să fie înlocuite cu inversul (oglinditul) lor, restul cuvintelor și aranjarea lor în propoziție să rămână neschi... |
No edit summary |
||
(4 intermediate revisions by the same user not shown) | |||
Line 18: | Line 18: | ||
== Exemplu 2 == | == Exemplu 2 == | ||
; Intrare | ; Intrare | ||
: 14567898765 esdrtyfugihk esdfghuikjnbvcvbhjhg x3456789098765434567&&&&&&&&&&&&%%%%%%%%%%%%% %%^%%%/############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ | : 14567898765 esdrtyfugihk esdfghuikjnbvcvbhjhg x3456789098765434567&&&&&&&&&&&&%%%%%%%%%%%%% %%^%%%/############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ fds vcxssdcv @@@@@@@@@@@@@v rdedf @@%$dvbgfrdcvc%^&&&&&&&&&&&&&&&&&&& 212345678987654323456787654345678765434567865432345cvb 67865432345 6543456 765434567654323456765432 34567u8iuygfcvb njkjhgfvcxsdrfthnbvcxdrtyhbvf gfghjkhbvcxc vdchdvfvf f | ||
; Ieșire | ; Ieșire | ||
: Datele de intrare nu corespund restricțiilor impuse. | : Datele de intrare nu corespund restricțiilor impuse. | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line="1"> | ||
# 2681 InversMax | |||
def validare(cuvinte): # functia de verificare a datelor de intrare | |||
if len(cuvinte) > 255: | |||
raise ValueError | |||
# daca datele de intrare nu corespund, ridicam eroarea ValueError | |||
print("Datele de intrare corespund restrictiilor impuse") | |||
return True | |||
def inversmax(cuvinte): # functia de rezolvare | |||
cuvinte = cuvinte.split() # impartim propozitia intr o lista de cuvinte | |||
maxim = -1 # aflam lungimea maxima | |||
for cuvant in cuvinte: | |||
contine_litera = False | |||
for litera in cuvant: | |||
if ('a' <= litera <= 'z') or ('A' <= litera <= 'Z'): | |||
contine_litera = True | |||
break | |||
# pentru a fi cuvant, trebuie sa contina litera, daca lungimea e si mai mare ca maximul, updatam maximul | |||
if contine_litera is True and maxim < len(cuvant): | |||
maxim = len(cuvant) | |||
for cuvant in cuvinte: | |||
contine_litera = False | |||
for litera in cuvant: | |||
if ('a' <= litera <= 'z') or ('A' <= litera <= 'Z'): | |||
contine_litera = True | |||
break | |||
# daca e cuvant si de lungime maxima, il afisam invers | |||
if contine_litera is True and maxim == len(cuvant): | |||
print(cuvant[::-1], end=" ") | |||
else: # altfel afisam asa cum e | |||
print(cuvant, end=" ") | |||
if __name__ == '__main__': | |||
# din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam | |||
try: | |||
text = input(f"Introduceti textul ") # citirea textului | |||
validare(text) # apelul functiei de validare | |||
inversmax(text) # apelul functiei de rezolvare | |||
except ValueError: | |||
print("Datele de intrare nu corespund restrictiilor impuse") | |||
except IndexError: | |||
print("Datele de intrare nu corespund restrictiilor impuse") | |||
</syntaxhighlight> |
Latest revision as of 19:49, 2 May 2023
Cerința[edit | edit source]
Se citește un șir de caractere reprezentând o propoziție care conține litere mari și mici ale alfabetului englez, spații, cifre și alte simboluri. În cele ce urmează, considerăm cuvânt orice secvență delimitată de spații ce conține cel puțin o literă.
Se se afișeze șirul citit astfel încât cuvintele de lungime maximă să fie înlocuite cu inversul (oglinditul) lor, restul cuvintelor și aranjarea lor în propoziție să rămână neschimbate.
Date de intrare[edit | edit source]
Programul citește de la tastatură șirul de caractere.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: " Datele de intrare corespund restrictiilor impuse", apoi pe un rand nou va afișa șirul transformat în conformitate cu cerința. În caz contrar, se va afișa mesajul:" Datele de intrare nu corespund restrictiilor impuse".
Restricții și precizări[edit | edit source]
- șirul dat va conține maximum 255 de caractere
Exemplu 1[edit | edit source]
- Intrare
- Mara 23a4 1234 %&a* %&*( are mere
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- araM 4a32 1234 *a&% %&*( are erem
Exemplu 2[edit | edit source]
- Intrare
- 14567898765 esdrtyfugihk esdfghuikjnbvcvbhjhg x3456789098765434567&&&&&&&&&&&&%%%%%%%%%%%%% %%^%%%/############@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ fds vcxssdcv @@@@@@@@@@@@@v rdedf @@%$dvbgfrdcvc%^&&&&&&&&&&&&&&&&&&& 212345678987654323456787654345678765434567865432345cvb 67865432345 6543456 765434567654323456765432 34567u8iuygfcvb njkjhgfvcxsdrfthnbvcxdrtyhbvf gfghjkhbvcxc vdchdvfvf f
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 2681 InversMax
def validare(cuvinte): # functia de verificare a datelor de intrare
if len(cuvinte) > 255: raise ValueError # daca datele de intrare nu corespund, ridicam eroarea ValueError print("Datele de intrare corespund restrictiilor impuse") return True
def inversmax(cuvinte): # functia de rezolvare
cuvinte = cuvinte.split() # impartim propozitia intr o lista de cuvinte maxim = -1 # aflam lungimea maxima
for cuvant in cuvinte: contine_litera = False for litera in cuvant: if ('a' <= litera <= 'z') or ('A' <= litera <= 'Z'): contine_litera = True break # pentru a fi cuvant, trebuie sa contina litera, daca lungimea e si mai mare ca maximul, updatam maximul if contine_litera is True and maxim < len(cuvant): maxim = len(cuvant)
for cuvant in cuvinte: contine_litera = False for litera in cuvant: if ('a' <= litera <= 'z') or ('A' <= litera <= 'Z'): contine_litera = True break # daca e cuvant si de lungime maxima, il afisam invers if contine_litera is True and maxim == len(cuvant): print(cuvant[::-1], end=" ") else: # altfel afisam asa cum e print(cuvant, end=" ")
if __name__ == '__main__':
# din cauza datelor de intrare pot aparea 2 tipuri de erori, valueError sau IndexError pe care le tratam try: text = input(f"Introduceti textul ") # citirea textului validare(text) # apelul functiei de validare inversmax(text) # apelul functiei de rezolvare
except ValueError: print("Datele de intrare nu corespund restrictiilor impuse") except IndexError: print("Datele de intrare nu corespund restrictiilor impuse")
</syntaxhighlight>