0073 – FSum Vec Min
Sursa: Stergere_Element
Cerinţă
Se dă un șir cu n
elemente întregi. Programul returnează suma celor mai mici m
elemente din tabloul de n elemente.
Date de intrare
Programul va citi de la tastatură două valori n m
, cu semnificația precizată, apoi n
numere întregi reprezentând elementele șirului.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte!", apoi se va afișa suma primelor m elemente cele mai mici ale șirului. Î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 < m <= n <= 100
- valorile elementelor șirului vor fi cuprinse între -1.000.000 și 1.000.000
Exemple
Exemplul 1
- Intrare
- Introduceti numarul de elemente: 8
- Introduceti numarul m: 3
- Introduceti 8 numere separate prin spatiu:1321 123 22 312 1 12 2 1
- Ieșire
- Datele introduse sunt corecte!
- Suma este: 4
Exemplul 2
- Intrare
- Introduceti numarul de elemente: 123
- Ieșire
- Datele introduse sunt incorecte!
Exemplul 3
- Intrare
- Introduceti numarul de elemente: 5
- Introduceti numarul m: 6
- Ieșire
- Datele introduse sunt incorecte!
Rezolvare
<syntaxhighlight lang="python" line="1"> def is_integer(value):
return value.isdigit()
def verificare_nr_elemente(n):
if is_integer(n): if 1 <= int(n) <= 1500: return n else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit()
def verificare_pozitie_de_sters(p, n):
if is_integer(p): if 1 <= int(p) <= int(n): return p 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 -1000000 <= int(i) <= 1000000: continue else: print("Datele introduse sunt incorecte!") exit() else: print("Datele introduse sunt incorecte!") exit()
def eliminare_elem_p(vector, p):
print("Datele introduse sunt corecte!") vector.pop(int(p) - 1) print("Noul vector este:", vector)
if __name__ == '__main__':
n = input("Introduceti numarul de elemente: ") verificare_nr_elemente(n) p = input("Introduceti pozitia de sters: ") verificare_pozitie_de_sters(p, n) elem = input(f"Introduceti {n} elem separate prin spatiu:").split() verificare_vector(n, elem) eliminare_elem_p(elem, p)
</syntaxhighlight>
Explicație rezolvare
Acest program preia un număr n
de elemente, un număr m
și n
numere separate prin spațiu. Apoi, calculează suma celor mai mici m
numere dintre cele n
numere introduse. Programul verifică și validează datele introduse înainte de a efectua operațiunea de calcul a sumei.
is_integer(value)
: Verifică dacă valoarea introdusă este un număr întreg.verificare_nr_elemente(n)
: Verifică dacăn
este un număr întreg între 0 și 100. Dacă nu, programul se oprește.verificare_m(m, n)
: Verifică dacăm
este un număr întreg între 1 șin
. Dacă nu, programul se oprește.verificare_vector(n, vector)
: Verifică dacă lungimea vectorului este egală cun
și dacă toate elementele din vector sunt numere întregi mai mici sau egale cu 10000. Dacă nu, programul se oprește.suma_celor_m_mai_mici(sir, m)
: Calculează suma celor mai micim
numere din listasir
și afișează suma.
În secțiunea if __name__ == '__main__'
, programul execută următoarele acțiuni:
- Preia numărul
n
de elemente de la utilizator și verifică dacă este valid. - Preia numărul
m
de la utilizator și verifică dacă este valid în raport cun
. - Preia
n
numere de la utilizator, separate prin spațiu, și verifică dacă sunt valide. - Convertește elementele în numere întregi și le stochează în lista
lst_int
. - Afișează un mesaj care indică faptul că datele introduse sunt corecte.
- Apelează funcția
suma_celor_m_mai_mici(lst_int, m)
pentru a calcula și afișa suma celor mai micim
numere din listalst_int
.