4316 - Cifre 18: Difference between revisions
No edit summary |
|||
(3 intermediate revisions by the same user not shown) | |||
Line 33: | Line 33: | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<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 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# Citim numărul și poziția cifrei de la tastatură | # Citim numărul și poziția cifrei de la tastatură | ||
Line 58: | Line 116: | ||
# Afișăm noul număr | # Afișăm noul număr | ||
print("Datele sunt introduse corect.") | |||
print("Noul număr este:", int(numar)) | print("Noul număr este:", int(numar)) | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 09:15, 15 May 2023
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>