2858 - pv: Difference between revisions
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/2858/pv - 2858 - pv] ---- == Cerinţe == Se dă un șir cu '''n''' elemente, '''numere naturale'''. * Să se afișeze '''elementele șirului de la dreapta la stânga'''. * Să se calculeze '''suma valorilor pare din șir'''. * Să se determine '''suma valorilor aflate pe poziții pare în șir'''. * Să se determine '''numărul numerelor din șir care sunt divizibile cu 10'''. * Să se determine '''suma numerelor divizibile cu 3 și afla... |
|||
Line 22: | Line 22: | ||
== Restricţii şi precizări == | == Restricţii şi precizări == | ||
* 1 ⩽ '''n''' ⩽ 100 | * 1 ⩽ '''n''' ⩽ 100 | ||
* elementele vectorului vor fi cuprinse între 0 și 100 | * elementele vectorului vor fi cuprinse '''între 0 și 100''' | ||
== Exemple == | == Exemple == |
Revision as of 10:07, 22 March 2023
Sursa: - 2858 - pv
Cerinţe
Se dă un șir cu n elemente, numere naturale.
- Să se afișeze elementele șirului de la dreapta la stânga.
- Să se calculeze suma valorilor pare din șir.
- Să se determine suma valorilor aflate pe poziții pare în șir.
- Să se determine numărul numerelor din șir care sunt divizibile cu 10.
- Să se determine suma numerelor divizibile cu 3 și aflate pe poziții impare.
Date de intrare
Programul citește de la tastatură numărul n, iar apoi șirul de n numere naturale, separate prin spații.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa:
"Datele sunt introduse corect.", apoi:
* pe un rând nou va afișa elementele șirului de la dreapta la stânga;
* pe un rând nou se va afișa un singur număr reprezentând suma valorilor pare;
* pe un rând nou se va afișa un singur număr reprezentând suma valorilor aflate pe poziții pare în șir;
* pe un rând nou se va afișa un singur număr reprezentând numărul numerelor din șir care sunt divizibile cu 10;
* pe ultimul rând se va afișa un singur număr reprezentând suma numerelor divizibile cu 3 și aflate pe poziții impare.
În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse.".
Restricţii şi precizări
- 1 ⩽ n ⩽ 100
- elementele vectorului vor fi cuprinse între 0 și 100
Exemple
Exemplul 1
- Intrare
- 10
- 1 2 3 4 5 6 7 8 9 10
- Ieșire
- Datele sunt introduse corect.
- 10 9 8 7 6 5 4 3 2 1
- 30
- 30
- 1
- 12
Exemplul 2
- Intrare
- 5
- 10 2 -3 4 5
- Ieșire
- Datele nu corespund restricțiilor impuse.
Rezolvare
<syntaxhighlight lang="python" line>
- 2858
def afisare_vector_invers(vector, n):
for i in range(n-1, -1, -1): print(vector[i], end=" ") print()
def afisare_suma_val_pare(vector, n):
suma_val_pare = 0 for i in range(n): if vector[i] % 2 == 0: suma_val_pare += vector[i] print(suma_val_pare)
def afisare_suma_poz_pare(vector, n):
suma_poz_pare = 0 # vectorul începe de la 0, așadar pozițiile pare vor fi cele impare în cazul acesta for i in range(n): if i % 2 != 0: suma_poz_pare += vector[i] print(suma_poz_pare)
def afisare_nr_el_div_10(vector, n):
nr_el_div_10 = 0 for i in range(n): if vector[i] % 10 == 0: nr_el_div_10 += 1 print(nr_el_div_10)
def afisare_suma_poz_imp_div_3(vector, n):
suma_poz_imp_div_3 = 0 for i in range(n): if vector[i] % 3 == 0 and i % 2 != 1: suma_poz_imp_div_3 += vector[i] print(suma_poz_imp_div_3)
def citire_conform_restrictiilor():
n = int(input()) if n < 1 or n > 100: print("Datele nu corespund restricțiilor impuse.") exit() vector = list(map(int, input().split())) for x in vector: if x < 0 or x > 100: print("Datele nu corespund restricțiilor impuse.") exit() if n != len(vector): print("Datele nu corespund restricțiilor impuse.") exit() print("Datele sunt introduse corect.") return vector, n
if __name__ == '__main__':
vector, n = citire_conform_restrictiilor() afisare_vector_invers(vector, n) afisare_suma_val_pare(vector, n) afisare_suma_poz_pare(vector, n) afisare_nr_el_div_10(vector, n) afisare_suma_poz_imp_div_3(vector, n)
</syntaxhighlight>