0362 - Sum Cif 1: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/362/sumcif1] == Cerinţa == Se citește un număr natural '''numar'''. Să se determine suma cifrelor aflate pe poziții pare. Numărarea pozițiilor în numărul dat se face începând de la cifra unităților. == Date de intrare == Programul citește de la tastatură numărul '''numar'''. == Date de ieşire == Programul afișează pe ecran numărul '''suma''', reprezentând suma cerută. == Restricții și precizări == * ''' 1 ⩽...
 
No edit summary
 
Line 2: Line 2:


== Cerinţa ==
== Cerinţa ==
Se citește un număr natural '''numar'''. Să se determine suma cifrelor aflate pe poziții pare. Numărarea pozițiilor în numărul dat se face începând de la cifra unităților.
Se citește un număr natural '''n'''. Să se determine suma cifrelor aflate pe poziții pare. Numărarea pozițiilor în numărul dat se face începând de la cifra unităților.
== Date de intrare ==
== Date de intrare ==
Programul citește de la tastatură numărul '''numar'''.
Programul citește de la tastatură numărul '''n'''.
== Date de ieşire ==
== Date de ieşire ==
Programul afișează pe ecran numărul '''suma''', reprezentând suma cerută.
Dacă datele introduse sunt corecte, pe ecran se va afișa '''"Datele introduse sunt corecte."''', apoi programul afișează pe ecran numărul '''s''', reprezentând suma cifrelor aflate pe poziții pare. În caz contrar, se va afișa pe ecran mesajul  '''"Datele introduse nu sunt corecte."'''.
== Restricții și precizări ==
== Restricții și precizări ==
* ''' 1 ⩽ numar ⩽ 1.000.000.000'''
* ''' 1 ⩽ n ⩽ 1.000.000.000'''


== Exemplu ==
== Exemplu ==
Line 14: Line 14:
: 59712654
: 59712654
; Ieșire
; Ieșire
: 19
: Datele introduse sunt corecte.
: Suma cifrelor aflate pe pozitii pare este 19.


== Explicație ==
== Explicație ==
Line 22: Line 23:


<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#0362


numar = int(input())
def verificare_date(n: int) -> bool:
suma = 0
    if n < 1 or n > 1000000000:
pozitie = 1
        return False
    return True


while numar > 0:
    cifra = numar % 10
    if pozitie % 2 == 0:
        suma += cifra
    pozitie += 1
    numar //= 10


print(suma)
def suma_cifre_pare(n: int) -> int:
    suma = 0
    pozitie = 1
 
    while n > 0:
        cifra = n % 10
        if pozitie % 2 == 0:
            suma += cifra
        pozitie += 1
        n //= 10
 
    return suma
 
 
if __name__ == "__main__":
    n = int(input("Introduceti un numar: "))
    if verificare_date(n):
        print("Datele introduse sunt corecte.")
        print(f"Suma cifrelor aflate pe pozitii pare este {suma_cifre_pare(n)}.")
    else:
        print("Datele introduse nu sunt corecte.")
 


</syntaxhighlight>
</syntaxhighlight>
== Explicație rezolvare ==
Prima funcție, '''verificare_date(n: int) -> bool''', primește ca argument un număr întreg '''n''' și returnează '''True''' dacă numărul este între 1 și 1.000.000.000 și '''False''' în caz contrar.<br><br>A doua funcție, '''suma_cifre_pare(n: int) -> int''', primește ca argument un număr întreg '''n''' și calculează suma cifrelor aflate pe poziții pare în numărul dat. Aceasta se realizează folosind o buclă while care descompune numărul în cifre și adaugă cifrele aflate pe poziții pare la variabila suma.<br><br>Funcția principală începe prin citirea unui număr întreg de la tastatură, utilizând funcția input() și transformând rezultatul într-un întreg cu ajutorul funcției int(). Dacă numărul introdus este valid, adică este între 1 și 1.000.000.000, se afișează un mesaj corespunzător și se calculează și afișează suma cifrelor aflate pe poziții pare, utilizând funcția '''suma_cifre_pare(n)'''. În caz contrar, se afișează un mesaj de eroare.

Latest revision as of 19:15, 28 April 2023

Sursă: [1]

Cerinţa[edit | edit source]

Se citește un număr natural n. Să se determine suma cifrelor aflate pe poziții pare. Numărarea pozițiilor în numărul dat se face începând de la cifra unităților.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieşire[edit | edit source]

Dacă datele introduse sunt corecte, pe ecran se va afișa "Datele introduse sunt corecte.", apoi programul afișează pe ecran numărul s, reprezentând suma cifrelor aflate pe poziții pare. În caz contrar, se va afișa pe ecran mesajul "Datele introduse nu sunt corecte.".

Restricții și precizări[edit | edit source]

  • 1 ⩽ n ⩽ 1.000.000.000

Exemplu[edit | edit source]

Intrare
59712654
Ieșire
Datele introduse sunt corecte.
Suma cifrelor aflate pe pozitii pare este 19.

Explicație[edit | edit source]

S-au adunat cifrele 5 2 7 5.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 0362

def verificare_date(n: int) -> bool:

   if n < 1 or n > 1000000000:
       return False
   return True


def suma_cifre_pare(n: int) -> int:

   suma = 0
   pozitie = 1
   while n > 0:
       cifra = n % 10
       if pozitie % 2 == 0:
           suma += cifra
       pozitie += 1
       n //= 10
   return suma


if __name__ == "__main__":

   n = int(input("Introduceti un numar: "))
   if verificare_date(n):
       print("Datele introduse sunt corecte.")
       print(f"Suma cifrelor aflate pe pozitii pare este {suma_cifre_pare(n)}.")
   else:
       print("Datele introduse nu sunt corecte.")


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Prima funcție, verificare_date(n: int) -> bool, primește ca argument un număr întreg n și returnează True dacă numărul este între 1 și 1.000.000.000 și False în caz contrar.

A doua funcție, suma_cifre_pare(n: int) -> int, primește ca argument un număr întreg n și calculează suma cifrelor aflate pe poziții pare în numărul dat. Aceasta se realizează folosind o buclă while care descompune numărul în cifre și adaugă cifrele aflate pe poziții pare la variabila suma.

Funcția principală începe prin citirea unui număr întreg de la tastatură, utilizând funcția input() și transformând rezultatul într-un întreg cu ajutorul funcției int(). Dacă numărul introdus este valid, adică este între 1 și 1.000.000.000, se afișează un mesaj corespunzător și se calculează și afișează suma cifrelor aflate pe poziții pare, utilizând funcția suma_cifre_pare(n). În caz contrar, se afișează un mesaj de eroare.