1320 – Ordonat – Neordonat

De la Universitas MediaWiki

Cerinţa

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

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

Date de ieșire

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

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

Exemplu

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

Rezolvare ver. 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.")