0906 - SumaCifre

From Bitnami MediaWiki
Revision as of 15:15, 30 April 2023 by Cuceu Andrei (talk | contribs)

Cerință

Să se scrie o funcție Python care să determine suma cifrelor pare și suma cifrelor impare pentru un număr natural transmis ca parametru. Funcția va întoarce rezultatele prin intermediul unor parametri de ieşire.

Date de intrare

Un număr natural n mai mic decât 2.000.000.000.


Date de iesire

Două valori întregi, suma cifrelor pare şi suma cifrelor impare ale lui n.


Restricții de precizări

Numele funcției va fi sumcif
Funcția va avea trei parametri: primul parametru reprezintă numărul n pentru care se calculează cifrele cerute,al doilea parametru va reprezenta suma cifrelor pare ale lui n, iar al treilea va reprezenta suma cifrelor impare ale lui n
n va fi număr natural mai mic decât 2.000.000.000

Exemplu

Exemplul 1

Dupa apelul
sumcif(274 , s , t);
Ieșire
s va avea valoarea 6, iar t va avea valoarea 7.

Important

Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.


Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1"> def validare(n):

   return int(n) < 2_000_000_000


def sumcif(n, sum_pare, sum_impare):

   x = n
   while n > 0:
       cifra = n % 10
       if cifra % 2 == 0:
           sum_pare += cifra
       else:
           sum_impare += cifra
       n //= 10
   print("Suma cifrelor pare ale lui", x, "este:", sum_pare)
   print("Suma cifrelor impare ale lui", x, "este:", sum_impare)


if __name__ == '__main__':

   n = input("Introduceți un număr natural: ")
   sum_pare, sum_impare = 0, 0
   if validare(n):
       print("Datele corespund restricțiilor impuse.")
       n = int(n)
       sumcif(n, sum_pare, sum_impare)
   else:
       print("Datele nu corespund restricțiilor impuse.")

</syntaxhighlight>


Explicatii

Funcția validare(n) primește un număr n și returnează True dacă acesta este mai mic decât 2.000.000.000 și False în caz contrar.

Funcția sumcif(n, sum_pare, sum_impare) primește un număr n și două variabile sum_pare și sum_impare pentru a stoca suma cifrelor pare și suma cifrelor impare ale lui n. Algoritmul parcurge cifrele lui n prin extragerea cifrei unităților folosind operatorul modulo și împărțind numărul la 10. Dacă cifra este pară, aceasta este adăugată la suma cifrelor pare, iar dacă este impară, este adăugată la suma cifrelor impare. La final, se afișează sumele calculate pentru numărul n.

În blocul if __name__ == '__main__': se primește numărul n de la utilizator prin intermediul funcției input() și se inițializează variabilele sum_pare și sum_impare cu valoarea 0. Se verifică dacă numărul n respectă restricțiile cu ajutorul funcției validare(n) și, dacă da, se converteste într-un număr întreg și se apelează funcția sumcif(n, sum_pare, sum_impare) pentru a calcula suma cifrelor pare și impare ale lui n. Dacă numărul n nu respectă restricțiile, se afișează un mesaj corespunzător.