4316 - Cifre 18
De la Universitas MediaWiki
Sursă: [1]
Cerinţa
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
Programul va citi de la tastatură numerele numar si pozitie.
Date de ieşire
Programul va afişa pe ecran valoarea lui numar, după transformarea cerută.
Restricții și precizări
- numar ≤ 2.000.000.000
Exemplu
- Intrare
- 31615 4
- Ieșire
- 31625
Explicație
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
- Intrare
- 32695 4
- Ieșire
- 32605
Explicație
A patra cifră a lui numar=32615 este 9. În acest caz se înlocuiește cu 0, deci numar devine 32605.
Rezolvare
Rezolvare ver. 1
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()
Rezolvare ver. 2
# 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))