4316 - Cifre 18
Sursă: [1]
Cerinţa[edit | edit source]
Să se scrie un program care citește un număr natural numar și o valoare nenulă pozitie, cel mult egală cu numărul de cifre ale lui numar. Să se mărească cifra de pe pozitia ceruta din numar cu 1 dacă este mai mică decât 9 și să se înlocuiască cu 0 în caz contrar.
Date de intrare[edit | edit source]
Programul va citi de la tastatură numerele numar si pozitie.
Date de ieşire[edit | edit source]
Programul va afişa pe ecran valoarea lui numar, după transformarea cerută.
Restricții și precizări[edit | edit source]
- numar ≤ 2.000.000.000
Exemplu[edit | edit source]
- Intrare
- 31615 4
- Ieșire
- 31625
Explicație[edit | edit source]
A patra cifră a lui numar=32615 este 1. Deoarece este mai mică decât 9 se va mări cu 1, deci numar devine 32625.
Exemplu[edit | edit source]
- Intrare
- 32695 4
- Ieșire
- 32605
Explicație[edit | edit source]
A patra cifră a lui numar=32615 este 9. În acest caz se înlocuiește cu 0, deci numar devine 32605.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_numar():
# Citeste numarul de la utilizator numar = int(input("Introduceți numărul: ")) return numar
def citeste_pozitie(numar):
# Citeste pozitia cifrei de la utilizator pozitie = int(input("Introduceți poziția cifrei pe care doriți să o măriți: ")) if pozitie <= 0 or pozitie > len(str(numar)): raise ValueError("Poziția trebuie să fie un număr nenul și mai mic sau egal cu numărul de cifre al numărului!") return pozitie
def maresti_cifra(numar, pozitie):
# Extrage cifra de la pozitia data cifra = int(str(numar)[pozitie-1])
if cifra < 9: # Daca cifra este mai mica decat 9, o marim cu 1 cifra += 1 else: # Daca cifra este 9, o inlocuim cu 0 cifra = 0
# Construieste noul numar prin inlocuirea cifrei de la pozitia data numar = str(numar)[:pozitie-1] + str(cifra) + str(numar)[pozitie:] return numar
def afiseaza_rezultat(numar):
# Afiseaza rezultatul print("Datele sunt introduse corect.") print("Noul număr este:", int(numar))
def main():
try: # Citeste numarul de la utilizator numar = citeste_numar()
# Citeste pozitia cifrei de la utilizator pozitie = citeste_pozitie(numar)
# Mareste cifra de la pozitia data numar_nou = maresti_cifra(numar, pozitie)
# Afiseaza rezultatul afiseaza_rezultat(numar_nou) except ValueError as e: # Afiseaza mesaj de eroare daca apare o exceptie print(str(e))
if __name__ == "__main__":
main()
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
- Citim numărul și poziția cifrei de la tastatură
numar = int(input("Introduceți numărul: ")) pozitie = int(input("Introduceți poziția cifrei pe care doriți să o măriți: "))
- Verificăm dacă numărul este un număr natural și poziția respectă condițiile impuse
if numar <= 0:
print("Numărul trebuie să fie un număr natural pozitiv!")
elif pozitie <= 0 or pozitie > len(str(numar)):
print("Poziția trebuie să fie un număr nenul și mai mic sau egal cu numărul de cifre al numărului!")
else:
# Obținem cifra de pe poziția k cifra = int(str(numar)[pozitie-1]) # Dacă cifra este mai mică decât 9, o mărim cu 1 if cifra < 9: cifra += 1 # În caz contrar, o înlocuim cu 0 else: cifra = 0 # Construim noul număr prin concatenarea părților din număr înainte și după poziția data numar = str(numar)[:pozitie-1] + str(cifra) + str(numar)[pozitie:] # Afișăm noul număr print("Datele sunt introduse corect.") print("Noul număr este:", int(numar))
</syntaxhighlight>