0886 - Secv Cons: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerința== Se citește un șir format din cel mult 255 caractere, litere mici ale alfabetului englez. Să se determine cea mai lungă secvență din șir formată numai din consoane. ==Date de intrare== Programul citește de la tastatură un șir de caractere S. ==Date de ieșire== Programul va afișa pe ecran subșirul determinat. ==Restricții și precizări== *dacă șirul dat conține mai multe subșiruri formate numai din consoane de lungime maximă se va afișa cea m...
Tag: visualeditor
 
No edit summary
Tag: visualeditor
 
Line 21: Line 21:
:Datele de intrare nu corespund restricțiilor impuse.
:Datele de intrare nu corespund restricțiilor impuse.
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="">
<syntaxhighlight lang="python" line="1">
#0886 - Secv Cons
#0886 - Secv Cons
def gaseste_sir(S):
def gaseste_sir(S):
     cel_mai_mare_sir = ""
     cel_mai_mare_sir = "" # inițializăm cel mai mare subșir, format numai din consoane cu un șir gol
     sirul_initial = ""
     sirul_initial = "" # inițializăm șirul în care construim subșirul format numai din consoane
     vocale = "aeiou"
     vocale = "aeiou" # definim lista de vocale
     for c in S[::-1]:
     for c in S[::-1]: # iterăm prin caracterele șirului S, în ordine inversă
         if c not in vocale:
         if c not in vocale: # dacă litera nu este o vocală
             sirul_initial = c + sirul_initial
             sirul_initial = c + sirul_initial # adăugăm caracterul la începutul șirului
         else:
         else:
             if len(sirul_initial) > len(cel_mai_mare_sir):
             if len(sirul_initial) > len(cel_mai_mare_sir): # dacă lungimea șirului este mai mare decât lungimea, cel mai mare subșir găsit până acum
                 cel_mai_mare_sir = sirul_initial
                 cel_mai_mare_sir = sirul_initial # actualizăm cel mai mare subșir
             sirul_initial = ""
             sirul_initial = "" # resetăm șirul curent
     if len(sirul_initial) > len(cel_mai_mare_sir):
     if len(sirul_initial) > len(cel_mai_mare_sir): # verificăm dacă șirul este cel mai mare subșir găsit
         cel_mai_mare_sir = sirul_initial
         cel_mai_mare_sir = sirul_initial # actualizăm cel mai mare subșir
     return cel_mai_mare_sir
     return cel_mai_mare_sir


if __name__ == "__main__":
if __name__ == "__main__":
     S = input("Introduceți șirul de caractere: ")
     S = input("Introduceți șirul de caractere: ")
     if all(c.isalpha() and c.islower() for c in S) and len(S) <= 255 and any(c not in "aeiou" for c in S):
     if all(c.isalpha() and c.islower() for c in S) and len(S) <= 255 and any(c not in "aeiou" for c in S):
         cel_mai_mare_sir = gaseste_sir(S)
        # verificarea restricțiilor
         cel_mai_mare_sir = gaseste_sir(S) # găsim cel mai mare subșir format numai din consoane
         print("Datele de intrare corespund restricțiilor impuse.")
         print("Datele de intrare corespund restricțiilor impuse.")
         print("Cel mai lung subșir format numai din consoane este:", cel_mai_mare_sir)
         print("Cel mai lung subșir format numai din consoane este:", cel_mai_mare_sir) # afișăm rezultatul
     else:
     else:
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")


   
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 11:32, 21 May 2023

Cerința[edit]

Se citește un șir format din cel mult 255 caractere, litere mici ale alfabetului englez. Să se determine cea mai lungă secvență din șir formată numai din consoane.

Date de intrare[edit]

Programul citește de la tastatură un șir de caractere S.

Date de ieșire[edit]

Programul va afișa pe ecran subșirul determinat.

Restricții și precizări[edit]

  • dacă șirul dat conține mai multe subșiruri formate numai din consoane de lungime maximă se va afișa cea mai din dreapta;
  • se garantează că în șirul dat există cel puțin o consoană;

Exemplul 1[edit]

Intrare
ukdiaehldjasmfx
Ieșire
Datele de intrare corespund restricțiilor impuse.
smfx

Exemplul 2[edit]

Intrare
aeiou
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit]

<syntaxhighlight lang="python" line="1">

  1. 0886 - Secv Cons

def gaseste_sir(S):

   cel_mai_mare_sir = ""  # inițializăm cel mai mare subșir, format numai din consoane cu un șir gol
   sirul_initial = ""  # inițializăm șirul în care construim subșirul format numai din consoane
   vocale = "aeiou"  # definim lista de vocale
   for c in S[::-1]:  # iterăm prin caracterele șirului S, în ordine inversă
       if c not in vocale:  # dacă litera nu este o vocală
           sirul_initial = c + sirul_initial  # adăugăm caracterul la începutul șirului
       else:
           if len(sirul_initial) > len(cel_mai_mare_sir):  # dacă lungimea șirului este mai mare decât lungimea, cel mai mare subșir găsit până acum
               cel_mai_mare_sir = sirul_initial  # actualizăm cel mai mare subșir
           sirul_initial = ""  # resetăm șirul curent
   if len(sirul_initial) > len(cel_mai_mare_sir):  # verificăm dacă șirul este cel mai mare subșir găsit
       cel_mai_mare_sir = sirul_initial  # actualizăm cel mai mare subșir
   return cel_mai_mare_sir


if __name__ == "__main__":

   S = input("Introduceți șirul de caractere: ")
   if all(c.isalpha() and c.islower() for c in S) and len(S) <= 255 and any(c not in "aeiou" for c in S):
       # verificarea restricțiilor
       cel_mai_mare_sir = gaseste_sir(S)  # găsim cel mai mare subșir format numai din consoane
       print("Datele de intrare corespund restricțiilor impuse.")
       print("Cel mai lung subșir format numai din consoane este:", cel_mai_mare_sir)  # afișăm rezultatul
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>