1320 – Ordonat – Neordonat

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Orice şir se încadrează în următoarele categorii: șir constant, șir strict crescător, șir crescător, șir strict descrescător, șir descrescător sau șir neordonat.

Se citește un șir vector cu numar_elemente elemente naturale. Să se verifice în ce categorie se încadrează.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul numar_elemente, iar apoi cele numar_elemente elemente ale şirului vector.

Date de ieșire[edit | edit source]

Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse.", urmat, pe rândul următor, de unul dintre mesajele sir constant, sir strict crescator, sir crescator, sir strict descrescator, sir descrescator sau sir neordonat. Se va tipări categoria cea mai strictă în care se încadrează şirul. În cazul în care datele de intrare nu corespund restricțiilor impuse, programul va afișa "Datele de intrare nu corespund restricțiilor impuse.".

Restricţii şi precizări[edit | edit source]

  • numar_elemente ∈ ℕ
  • 1 ⩽ numar_elemente ⩽ 1000
  • element vector ∈ ℕ
  • 0 ⩽ element vector ⩽ 1000000000

Exemplu[edit | edit source]

Intrare
5
1
2
3
4
5
Ieșire
Datele introduse corespund restricțiilor impuse.
sir strict crescator


Intrare
5
1
1
1
1
1
Ieșire
Datele introduse corespund restricțiilor impuse.
sir constant


Intrare
5
5
3
3
2
1
Ieșire
Datele introduse corespund restricțiilor impuse.
sir descrescator


Intrare
5
1
1
1
1
1
Ieșire
Datele introduse corespund restricțiilor impuse.
sir constant


Intrare
3
5
abc
63.5
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Intrare
2
-25
abc
Ieșire
Datele introduse nu corespund restricțiilor impuse.


Rezolvare[edit | edit source]

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 1320 - Ordonat - Neordonat

def validare_date_numar_elemente(numar):

   if numar.isdigit() and 1 <= int(numar) <= 1_000:
       return True
   else:
       return False


def validare_date_vector(vector):

   for numar in vector:
       if numar.isdigit() and len(numar) < 10:
           continue
       else:   
           return False
   return True
   

def ordonat_neordonat(numar_elemente, vector):

   flag_crescator = int(0)
   flag_descrescator = int(0)
   flag_constant = int(0)
   flag_neordonat = int(0)
   
   for indice1 in range(numar_elemente-1):
       for indice2 in range(indice1 + 1, numar_elemente):
           if vector[indice1] < vector[indice2]:
               flag_crescator += 1
           if vector[indice1] > vector[indice2]:
               flag_descrescator += 1
           if vector[indice1] == vector[indice2]:
               flag_constant += 1
           if flag_crescator > 0 and flag_descrescator > 0:
               flag_neordonat += 1
               
   if flag_neordonat > 0:
       print("sir neordonat")
   elif flag_crescator == 0 and flag_descrescator == 0 and flag_constant > 0:
       print("sir constant")
   elif flag_crescator == 0 and flag_descrescator > 0 and flag_constant > 0:
       print("sir descrescator")
   elif flag_crescator > 0 and flag_descrescator == 0 and flag_constant > 0:
       print("sir crescator")
   elif flag_crescator == 0 and flag_descrescator > 0 and flag_constant == 0:
       print("sir strict descrescator")
   elif flag_crescator > 0 and flag_descrescator == 0 and flag_constant == 0:
       print("sir strict crescator")
       

if __name__ == "__main__":

   numar_elemente = input()
   vector = []
   
   if validare_date_numar_elemente(numar_elemente):
       numar_elemente = int(numar_elemente)
       for indice in range(numar_elemente):
           vector.append(input())
       if validare_date_vector(vector):
           vector = list(map(int, vector))
           print("Datele de intrare corespund restricțiilor impuse.")
           ordonat_neordonat(numar_elemente, vector)
       else:
           print("Datele de intrare nu corespund restricțiilor impuse.")
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")
         

</syntaxhighlight>