3656 – FGreater
Sursa: FGreater
Cerinţă
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
Programul va citi de la tastatură o valoaren
, urmată de n numere întregi, și un nr x.
Date de ieșire
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
- 0 <=n[i], x <= 2^31 - 1
Exemple
Exemplul 1
- 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
- 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
- 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
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)
Explicație rezolvare
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.