0075 – FSum Div3

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Sursa: FSum DIv3


Cerinţă

Se dă un șir cu n elemente întregi și un număr p. Să se șteargă din șirul X elementul aflat pe poziția p.

Date de intrare

Programul va citi de la tastatură două valori n p, 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 elementelor divizibile cu 3 din șir. Î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 <= 100

Exemple

Exemplul 1

Intrare
Introduceti numarul de elemente: 5
Introduceti 5 numere separate prin spatiu:3 2 6 9 12
Ieșire
Datele introduse sunt corecte!
Suma este: 30

Exemplul 2

Intrare
Introduceti numarul de elemente: 1234
Ieșire
Datele introduse sunt incorecte!

Exemplul 3

Intrare
Introduceti numarul de elemente: 6
Introduceti 6 numere separate prin spatiu:1 2 4 5 6 3
Ieșire
Datele introduse sunt corecte!
Suma este: 9

Rezolvare

def is_integer(value):
    return value.isdigit()


def verificare_nr_elemente(n):
    if is_integer(n):
        if 0 <= int(n) <= 100:
            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) <= 10000:
                    continue
                else:
                    print("Datele introduse sunt incorecte!")
                    exit()
            else:
                print("Datele introduse sunt incorecte!")
                exit()


def suma_div_cu_3(sir):
    suma = 0
    for elem in sir:
        if elem % 3 == 0:
            suma += elem
    print("Suma este:", suma )


if __name__ == '__main__':
    n = input("Introduceti numarul de elemente: ")
    verificare_nr_elemente(n)
    elem = input(f"Introduceti {n} numere separate prin spatiu:").split()
    verificare_vector(n, elem)
    lst_int = list(map(int, elem))
    print("Datele introduse sunt corecte!")
    suma_div_cu_3(lst_int)

Explicație rezolvare

Acest program preia un număr n de elemente și n numere separate prin spațiu. Apoi, calculează suma tuturor numerelor divizibile cu 3 dintre acestea. Programul verifică și validează datele introduse înainte de a efectua operațiunea de calcul a sumei.

  1. is_integer(value): Verifică dacă valoarea introdusă este un număr întreg.
  2. verificare_nr_elemente(n): Verifică dacă n este un număr întreg între 0 și 100. Dacă nu, programul se oprește.
  3. verificare_vector(n, vector): Verifică dacă lungimea vectorului este egală cu n și dacă toate elementele din vector sunt numere întregi mai mici sau egale cu 10000. Dacă nu, programul se oprește.
  4. suma_div_cu_3(sir): Calculează suma elementelor divizibile cu 3 din lista sir și afișează suma.

În secțiunea if __name__ == '__main__', programul execută următoarele acțiuni:

  1. Preia numărul n de elemente de la utilizator și verifică dacă este valid.
  2. Preia n numere de la utilizator, separate prin spațiu, și verifică dacă sunt valide.
  3. Convertește elementele în numere întregi și le stochează în lista lst_int.
  4. Afișează un mesaj care indică faptul că datele introduse sunt corecte.
  5. Apelează funcția suma_div_cu_3(lst_int) pentru a calcula și afișa suma numerelor divizibile cu 3 din lista lst_int.