2858 - pv

From Bitnami MediaWiki

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>

  1. 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>