4316 - Cifre 18: Difference between revisions

From Bitnami MediaWiki
Am creat de la zero.
 
No edit summary
 
(9 intermediate revisions by the same user not shown)
Line 18: Line 18:
; Ieșire
; Ieșire
: 31625
: 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 ==
== Exemplu ==
Line 25: Line 28:
: 32605
: 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 ==


=== Rezolvare ver. 1 ===
<syntaxhighlight lang="python" line>
<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>
# Citim numărul și poziția cifrei de la tastatură
numar = int(input("Introduceți numărul: "))
numar = int(input("Introduceți numărul: "))
pozitie = int(input("Introduceți poziția: "))
pozitie = int(input("Introduceți poziția cifrei pe care doriți să o măriți: "))


    # Verificăm dacă numar este un număr natural și k respectă condițiile impuse
# Verificăm dacă numărul este un număr natural și poziția respectă condițiile impuse
if numar <= 0:
if numar <= 0:
     print("n trebuie să fie un număr natural pozitiv!")
     print("Numărul trebuie să fie un număr natural pozitiv!")
elif pozitie <= 0 or pozitie > len(str(numar)):
elif pozitie <= 0 or pozitie > len(str(numar)):
     print("pozitie trebuie să fie un număr nenul și mai mic sau egal cu numărul de cifre ale lui 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:
else:
     # Obținem cifra de pe poziția ceruta
     # Obținem cifra de pe poziția k
     cifra = int(str(numar)[pozitie - 1])
     cifra = int(str(numar)[pozitie-1])
 
   
     # Dacă cifra este mai mică decât 9, o mărim cu 1
     # Dacă cifra este mai mică decât 9, o mărim cu 1
     if cifra < 9:
     if cifra < 9:
Line 47: Line 111:
     else:
     else:
         cifra = 0
         cifra = 0
 
   
     # Construim noul număr
     # 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:]
     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))
     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>