3656 – FGreater
Sursa: FGreater
Cerinţă[edit | edit source]
Se dă un șir cu n
elemente întregi și un număr x
întreg. Funcția returnează cel mai mic număr din șir, strict mai mare decât x
. În caz că nu există o asemenea valoare, funcția va returna valoarea -1
Date de intrare[edit | edit source]
Programul va citi de la tastatură o valoaren
, urmată de n numere întregi, și un nr x.
Date de ieșire[edit | edit source]
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte!", apoi se va afișa cel mai mic număr din șir, strict mai mare decât x (dacă nu există, se va returna -1). În cazul în care datele nu respectă restricțiile, se va afișa mesajul "Datele introduse nu sunt corecte!".
Restricţii şi precizări[edit | edit source]
- 0 <=n[i], x <= 2^31 - 1
Exemple[edit | edit source]
Exemplul 1[edit | edit source]
- Intrare
- Introduceti numarul de elemente a sirului: 4
- Introduceti 4 numere separate prin spatiu:1234 21 12 1
- Introduceti valoarea x: 11
- Ieșire
- Datele introduse sunt corecte!
- Cel mai mic nr strict mai mare decat x este 12
Exemplul 2[edit | edit source]
- Intrare
- Introduceti numarul de elemente a sirului: 4
- Introduceti 4 numere separate prin spatiu:1234 21 12 1
- Introduceti valoarea x: 123456
- Ieșire
- Datele introduse sunt corecte!
- -1
Exemplul 3[edit | edit source]
- Intrare
- Introduceti numarul de elemente a sirului: 6
- Introduceti 6 numere separate prin spatiu:23443 323 23 23 2 34
- Introduceti valoarea x: 5
- Ieșire
- Datele introduse sunt corecte!
- Cel mai mic nr strict mai mare decat x este 23
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1"> def is_integer(value):
return value.isdigit()
def verificare_nr_elemente(n):
if is_integer(n): if 0 < int(n) <= 1000000: return n else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit()
def verificare_vector(n, vector):
if len(vector) != int(n): print("Datele introduse sunt incorecte!") exit() else: for i in vector: if is_integer(i): if int(i) <= 2**31 - 1: continue else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit()
def verificare_x(x):
if is_integer(x): if int(x) <= 2**31 - 1: return x else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit()
def nr_strict_mai_mare(sir, x):
nr_mai_mari = [] for elem in sir: if elem > int(x): nr_mai_mari.append(elem) if len(nr_mai_mari) == 0: print("-1") exit() else: nr_mai_mari_sortate = sorted(nr_mai_mari) print("Cel mai mic nr strict mai mare decat x este", nr_mai_mari_sortate[0])
if __name__ == '__main__':
n = input("Introduceti numarul de elemente a sirului: ") verificare_nr_elemente(n) elem = input(f"Introduceti {n} numere separate prin spatiu:").split() verificare_vector(n, elem) lst_int = list(map(int, elem)) x = input("Introduceti valoarea x: ") verificare_x(x) print("Datele introduse sunt corecte!") nr_strict_mai_mare(lst_int, x)
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Acest program este creat pentru a găsi cel mai mic număr strict mai mare decât o valoare dată (x) într-un șir de numere introdus de utilizator. Programul conține mai multe funcții pentru a verifica și procesa datele introduse:
is_integer(value)
- Verifică dacă un șir de caractere conține doar cifre și returneazăTrue
în acest caz sauFalse
în caz contrar.verificare_nr_elemente(n)
- Verifică dacă numărul de elemente introdus este un număr întreg între 1 și 1.000.000. Dacă nu este, afișează un mesaj de eroare și închide programul.verificare_vector(n, vector)
- Verifică dacă lungimea vectorului introdus este egală cun
și dacă toate elementele sunt numere întregi mai mici sau egale cu 2^31 - 1. Dacă nu, afișează un mesaj de eroare și închide programul.verificare_x(x)
- Verifică dacă valoarea x introdusă este un număr întreg mai mic sau egal cu 2^31 - 1. Dacă nu este, afișează un mesaj de eroare și închide programul.nr_strict_mai_mare(sir, x)
- Primeste un sir de numere întregi și valoarea x, găsește cel mai mic număr strict mai mare decât x în sir, și afișează rezultatul. Dacă nu există un astfel de număr, afișează "-1".
În secțiunea __main__
, programul solicită utilizatorului să introducă numărul de elemente și elementele sirului, apoi verifică datele introduse. De asemenea, se cere valoarea x și se verifică dacă este corectă. Dacă toate datele sunt corecte, programul apelează funcția nr_strict_mai_mare()
pentru a găsi cel mai mic număr strict mai mare decât x în sir și afișează rezultatul.