0287 – Verif Ord

From Bitnami MediaWiki
Revision as of 19:19, 3 January 2023 by Bogdan.Pop (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Se dau numar_vectori şiruri cu elemente numere întregi. Să se verifice despre fiecare dacă este ordonat crescător.

Date de intrare

Programul citește de la tastatură numărul numar_vectori; iar apoi numar_vectori şiruri – pentru fiecare, se citeşte mai întâi numărul de valori numar_elemente, apoi valorile din şir.

Date de ieșire

Programul afișează pe ecran mesajul "Datele de intrare corespund restricțiilor impuse.", iar pe rândul următor numar_vectori valori 0 sau 1, separate prin spaţii. A k-a valoare este 1, dacă al k-lea şir este ordonat crescător, respectiv 0 dacă şirul nu este ordonat crescător. În cazul în care datele de intrare nu corespund restricțiilor impuse, se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse.".

Restricţii şi precizări

  • numar_elemente, numar_vectori ∈ ℕ
  • 1 ⩽ numar_vectori ⩽ 10
  • 1 ⩽ numar_elemente ⩽ 500
  • -10000 < element vector < 10000
  • element vector ∈ ℤ

Exemplu

Intrare
3
9
5
-5
8
-2
-7
0
-9
10
7
-6
-5
-4
0
2
5
8
5
2
7
8
10
10
Ieșire
Datele introduse corespund restricțiilor impuse.
0 1 1


Intrare
3
2
15
10
0
Ieșire
Datele introduse nu corespund restricțiilor impuse.


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


Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line>

  1. 0287 - Verif Ord

def validare_date_numar_vectori(numar):

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

def validare_date_numar_elemente(numar):

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


def validare_date_vector(vector):

   for numar in vector:
       if numar.startswith('-') and numar[1:].isdigit() and len(numar) < 6:
           continue
       elif numar.isdigit() and len(numar) < 5:
           continue
       else:   
           return False
   return True
   

def verif_ord(numar_vectori, vector):

   flag = []
   
   for indice_vector in range(numar_vectori):
       if vector[indice_vector] == sorted(vector[indice_vector]):
           flag.append("1")
       else:
           flag.append("0")
   
   print(*flag, sep=" ")
   

if __name__ == "__main__":

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

</syntaxhighlight>