1152 - Verificare Ordonat Div Imp: Difference between revisions

From Bitnami MediaWiki
Andrada378 (talk | contribs)
Pagină nouă: Cerinta Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescător. Date de intrare Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului. Date de iesire Programul afișează pe ecran mesajul DA, dacă vectorul are elementele ordonate crescător, sau NU, în caz contrar. Restrictii si precizari 1 ≤ n ≤ 500 fiecare element al vectorul...
 
Andrada378 (talk | contribs)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
Cerinta
== Cerința ==
 
Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescător.
Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescător.


Date de intrare
== Date de intrare ==
 
Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului.
Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului.


Date de iesire
== Date de iesire ==
 
Programul afișează pe ecran mesajul DA, dacă vectorul are elementele ordonate crescător, sau NU, în caz contrar.
Programul afișează pe ecran mesajul DA, dacă vectorul are elementele ordonate crescător, sau NU, în caz contrar.


Restrictii si precizari
== Restricții si precizări ==


1 ≤ n ≤ 500
* 1 ≤ n ≤ 500
* fiecare element al vectorului va avea cel mult patru cifre


fiecare element al vectorului va avea cel mult patru cifre
=== Exemplu ===
 
'''Date de intrare'''
Exemplu
 
Date de intrare  


7
7
Line 25: Line 20:
4 5 7 9 9 10 12  
4 5 7 9 9 10 12  


Date de iesire
'''Date de ieșire'''


DA
DA


''<u>Rezolvare</u>''
== Rezolvare ==
 
<syntaxhighlight lang="python">
def are_elemente_ordonate_crescator(arr):
def validare_date(n, a):
 
    if not 1 <= n <= 500:
    if len(arr) <= 1:
        print("Valoare invalidă pentru n.")
 
        exit()
        return True
 
    mijloc = len(arr) // 2
 
    stanga = arr[:mijloc]
 
    dreapta = arr[mijloc:]
 
    return are_elemente_ordonate_crescator(stanga) and are_elemente_ordonate_crescator(dreapta) and stanga[-1] <= dreapta[0]
 
def main():
 
    n = int(input("Introduceți lungimea vectorului: "))
 
    vector = list(map(int, input("Introduceți elementele vectorului separate prin spațiu: ").split()))
 
    rezultat = are_elemente_ordonate_crescator(vector)
 
    if rezultat:


        print("DA")
    if any(not 0 <= element <= 9999 for element in a[1:]):
        print("Valoare invalidă în vector. Fiecare element ar trebui să aibă cel mult patru cifre.")
        exit()


    else:
def ordonat(a, st, dr):
    if st == dr:
        return 1
    else:
        mij = (st + dr) // 2
        a1 = ordonat(a, st, mij)
        a2 = ordonat(a, mij + 1, dr)
        if a1 == a2 and a[mij] <= a[mij + 1]:
            return 1
        else:
            return 0


        print("NU")
n = int(input())
a = [0] + list(map(int, input().split()))


if __name__ == "__main__":
if ordonat(a, 1, n):
    print("DA")
else:
    print("NU")


    main()
</syntaxhighlight>

Latest revision as of 22:03, 3 January 2024

Cerința[edit | edit source]

Se dă un vector cu n elemente numere naturale. Folosind metoda Divide et Impera să se verifice dacă are elementele ordonate crescător.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n, apoi n numere naturale, reprezentând elementele vectorului.

Date de iesire[edit | edit source]

Programul afișează pe ecran mesajul DA, dacă vectorul are elementele ordonate crescător, sau NU, în caz contrar.

Restricții si precizări[edit | edit source]

  • 1 ≤ n ≤ 500
  • fiecare element al vectorului va avea cel mult patru cifre

Exemplu[edit | edit source]

Date de intrare

7

4 5 7 9 9 10 12

Date de ieșire

DA

Rezolvare[edit | edit source]

<syntaxhighlight lang="python"> def validare_date(n, a):

   if not 1 <= n <= 500:
       print("Valoare invalidă pentru n.")
       exit()
   if any(not 0 <= element <= 9999 for element in a[1:]):
       print("Valoare invalidă în vector. Fiecare element ar trebui să aibă cel mult patru cifre.")
       exit()

def ordonat(a, st, dr):

   if st == dr:
       return 1
   else:
       mij = (st + dr) // 2
       a1 = ordonat(a, st, mij)
       a2 = ordonat(a, mij + 1, dr)
       if a1 == a2 and a[mij] <= a[mij + 1]:
           return 1
       else:
           return 0

n = int(input()) a = [0] + list(map(int, input().split()))

if ordonat(a, 1, n):

   print("DA")

else:

   print("NU")

</syntaxhighlight>