4316 - Cifre 18: Difference between revisions

From Bitnami MediaWiki
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>

  1. 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: "))

  1. 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>