0362 - Sum Cif 1: Difference between revisions
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 ''' | 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 ''' | Programul citește de la tastatură numărul '''n'''. | ||
== Date de ieşire == | == Date de ieşire == | ||
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 ⩽ | * ''' 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 | |||
def verificare_date(n: int) -> bool: | |||
if n < 1 or n > 1000000000: | |||
return False | |||
return True | |||
print( | 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
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
Programul citește de la tastatură numărul n.
Date de ieşire
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
- 1 ⩽ n ⩽ 1.000.000.000
Exemplu
- Intrare
- 59712654
- Ieșire
- Datele introduse sunt corecte.
- Suma cifrelor aflate pe pozitii pare este 19.
Explicație
S-au adunat cifrele 5 2 7 5.
Rezolvare
<syntaxhighlight lang="python" line>
- 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
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.