0340 - Control: Difference between revisions

From Bitnami MediaWiki
Am creat de la zero.
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
sursa: [https://www.pbinfo.ro/probleme/340/control]
== Explicatii ==
== Explicatii ==
Pentru un număr natural dat, se calculează cifra de control în felul următor:
Pentru un număr natural dat, se calculează cifra de control în felul următor:
Line 30: Line 31:


== Rezolvare ==
== Rezolvare ==
=== Rezolvare ver. 1 ===
=== Rezolvare ver. 1 ===
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>


# Citim numarul de la tastatura
def calculeaza_cifra_control(numar):
numar = input("Introduceti un numar natural: ")
    # Validare date de intrare
    if numar < 0 or numar > 999999999:
        print("Datele introduse nu sunt valide. Introduceti un numar natural cu cel mult nouă cifre.")
    else:
        # Calculam cifra de control
        while numar > 9:
            suma = 0
            while numar > 0:
                cifra = numar % 10
                suma += cifra
                numar //= 10
            numar = suma
        cifra_control = numar
        print("Datele introduse sunt valide.")
        # Afisam cifra de control
        print("Cifra de control a numarului este", cifra_control)
 
 
if __name__ == "__main__":
    numar = int(input("Introduceti un numar natural: "))
    calculeaza_cifra_control(numar)
 
</syntaxhighlight>
 
=== Rezolvare ver. 2 ===
<syntaxhighlight lang="python" line>
 
numar = int(input("Introduceti un numar natural: "))


# Validare date de intrare
# Validare date de intrare
if not numar.isdigit() or len(numar) > 9:
if numar <= 0 or numar > 999999999:
     print("Datele introduse nu sunt valide. Introduceti un numar natural cu cel mult nouă cifre.")
     print("Datele introduse nu sunt valide. Introduceti un numar natural cu cel mult nouă cifre.")
else:
else:
     # Calculam cifra de control
     # Calculam cifra de control
     while len(numar) > 1:
     while numar > 9:
         suma = 0
         suma = 0
         for cifra in numar:
         while numar > 0:
             suma += int(cifra)
            cifra = numar % 10
         numar = str(suma)
             suma += cifra
     cifra_control = int(numar)
            numar = numar // 10
         numar = suma
     cifra_control = numar
     print("Datele introduse sunt valide.")
     print("Datele introduse sunt valide.")
     # Afisam cifra de control
     # Afisam cifra de control
     print("Cifra de control a numarului este", cifra_control)
     print("Cifra de control a numarului este", cifra_control)


</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 23:16, 15 May 2023

sursa: [1]

Explicatii[edit | edit source]

Pentru un număr natural dat, se calculează cifra de control în felul următor:

  • se determină suma cifrelor
  • pentru rezultat se determină suma cifrelor
  • se continuă până când suma devine un număr dintr-o singură cifră, aceasta fiind cifra de control a numărului inițial

Cerinţa[edit | edit source]

Pentru un număr citit, să se determine cifra de control.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul natural.

Date de ieşire[edit | edit source]

Programul afișează pe ecran numărul C, reprezentând cifra de control a numarului.

Restricții și precizări[edit | edit source]

  • numarul are cel mult nouă cifre

Exemplu[edit | edit source]

Intrare
865247
Ieșire
Datele introduse sunt valide.
5

Explicatie[edit | edit source]

Suma cifrelor lui 865247 este 32, iar suma cifrelor lui 32 este 5.

Rezolvare[edit | edit source]

Rezolvare ver. 1[edit | edit source]

<syntaxhighlight lang="python" line>

def calculeaza_cifra_control(numar):

   # Validare date de intrare
   if numar < 0 or numar > 999999999:
       print("Datele introduse nu sunt valide. Introduceti un numar natural cu cel mult nouă cifre.")
   else:
       # Calculam cifra de control
       while numar > 9:
           suma = 0
           while numar > 0:
               cifra = numar % 10
               suma += cifra
               numar //= 10
           numar = suma
       cifra_control = numar
       print("Datele introduse sunt valide.")
       # Afisam cifra de control
       print("Cifra de control a numarului este", cifra_control)


if __name__ == "__main__":

   numar = int(input("Introduceti un numar natural: "))
   calculeaza_cifra_control(numar)

</syntaxhighlight>

Rezolvare ver. 2[edit | edit source]

<syntaxhighlight lang="python" line>

numar = int(input("Introduceti un numar natural: "))

  1. Validare date de intrare

if numar <= 0 or numar > 999999999:

   print("Datele introduse nu sunt valide. Introduceti un numar natural cu cel mult nouă cifre.")

else:

   # Calculam cifra de control
   while numar > 9:
       suma = 0
       while numar > 0:
           cifra = numar % 10
           suma += cifra
           numar = numar // 10
       numar = suma
   cifra_control = numar
   print("Datele introduse sunt valide.")
   # Afisam cifra de control
   print("Cifra de control a numarului este", cifra_control)

</syntaxhighlight>