0056 - Numărare Perechi: Difference between revisions

From Bitnami MediaWiki
Dragos1234 (talk | contribs)
Dragos1234 (talk | contribs)
 
(3 intermediate revisions by the same user not shown)
Line 24: Line 24:
: Introduceți următorul număr: 0
: Introduceți următorul număr: 0
; Ieșire
; Ieșire
: Rezultat: 3
: Datele introduse corespund cerintelor.
: 3
<br>
<br>


Line 37: Line 38:
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
#0056
#0056
def is_valid(number):
def count_matching_digits(num1, num2):
     return -1000000 < number < 1000000 or number == 0
     """
    Returnează numărul de cifre identice dintre cele două numere primite ca argumente.
    """
    count = 0
    while num2:
        if num1 % 10 == num2 % 10:
            count += 1
        num1 = num2
        num2 = int(input("Introduceți un număr: "))
        if num2 == 0:
            break
    return count




def get_valid_input(prompt):
def validate_input(num):
     """
     """
     Returnează un număr valid introdus de utilizator.
     Verifică dacă numărul dat ca argument aparține intervalului (-1.000.000; 1.000.000).
    Prompt-ul este afișat la consolă.
     """
     """
     num = int(input(prompt))
     if num == 0:
    while not is_valid(num):
         print("Datele introduse nu corespund cerintelor.")
         print("Datele introduse nu corespund cerintelor.")
         exit()
         exit()
     return num
        return False
    if num < -1000000 or num > 1000000:
        print("Datele introduse nu corespund cerintelor.")
        exit()
        return False
     return True




def count_matching_digits():
if __name__ == "__main__":
    """
     num1 = int(input("Introduceți primul număr: "))
    Calculează numărul de cifre care se potrivesc în doi numere introduse de utilizator.
     while not validate_input(num1):
    """
        num1 = int(input("Introduceți primul număr: "))
     num1 = get_valid_input("Introduceți primul număr: ")
     num2 = get_valid_input("Introduceți al doilea număr: ")


     if num1 < 0:
     num2 = int(input("Introduceți al doilea număr: "))
        num1 = -num1
     while not validate_input(num2):
     if num2 < 0:
         num2 = int(input("Introduceți al doilea număr: "))
         num2 = -num2


     count = 0
     count = count_matching_digits(num1, num2)
    while num2:
     print(f"Datele introduse corespund cerintelor.\n{count}")
        if num1 % 10 == num2 % 10:
            count += 1
        num1 = num2
        num2 = get_valid_input("Introduceți următorul număr: ")
        if num2 < 0:
            num2 = -num2
   
     print("Datele corespund cerintelor.")
    print(f"Rezultat: {count}")




def main():
</syntaxhighlight>
    count_matching_digits()


== Explicatie rezolvare ==
Acest program conține două funcții și o secțiune principală de cod care le folosește.


main()
1. Funcția "count_matching_digits(num1, num2)" primește doi parametri de tip întreg și returnează numărul de cifre identice dintre cele două numere. Funcția utilizează un ciclu "while" pentru a parcurge cifrele din ambele numere. În fiecare iterație, se verifică dacă ultima cifră a fiecărui număr este identică și, dacă da, se adaugă 1 la contorul "count". Apoi, ultima cifră a fiecărui număr este eliminată prin împărțirea la 10, până când numărul doi ajunge la zero. La final, funcția returnează valoarea contorului "count".


2. Funcția "validate_input(num)" primește un parametru de tip întreg și verifică dacă numărul se încadrează în intervalul (-1.000.000, 1.000.000). Dacă numărul nu se încadrează în interval, funcția afișează un mesaj de eroare și oprește programul utilizând funcția "exit()". În caz contrar, funcția returnează valoarea "True".


</syntaxhighlight>
În secțiunea principală a programului, utilizatorul introduce două numere folosind funcția "input()". Apoi, fiecare număr este validat utilizând funcția "validate_input(num)" și, dacă numerele sunt valide, funcția "count_matching_digits(num1, num2)" este apelată pentru a calcula numărul de cifre comune între cele două numere. Dacă cele două numere sunt invalide, programul va continua să solicite introducerea unor numere valide utilizând o buclă "while". La final, programul afișează numărul de cifre comune.
== Explicatie rezolvare ==
Acest program calculează numărul de cifre care se potrivesc între două numere întregi introduse de utilizator. Funcția '''is_valid(number)''' verifică dacă numărul introdus este un număr întreg între '''-1000000''' și '''1000000''' sau dacă este egal cu '''0''', iar funcția ''''get_valid_input(prompt)''' cere utilizatorului să introducă un număr valid și verifică cu ajutorul funcției '''is_valid(number)''' dacă numărul introdus este valid. Funcția '''count_matching_digits()''' cere utilizatorului să introducă două numere întregi valide, apoi calculează numărul de cifre care se potrivesc între cele două numere prin parcurgerea cifră cu cifră a acestora și compararea lor. Dacă numerele introduse sunt negative, programul le transformă în numere pozitive. În final, programul afișează numărul de cifre care se potrivesc. Funcția '''main()''' apelează funcția '''count_matching_digits()''' pentru a începe procesul de calculare a numărului de cifre care se potrivesc.

Latest revision as of 17:49, 30 April 2023

Sursa: [1]

Cerinţa[edit | edit source]

Se citesc numere de la tastatură până la apariția lui zero. Să se determine câte perechi de elemente citite consecutiv se termină cu aceeași cifră.

Date de intrare[edit | edit source]

Programul citește de la tastatură numere întregi. Citirea se încheie la introducerea valorii 0.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă programul afișează pe ecran numărul C, reprezentând numărul de perechi citite care respectă condiția cerută. În caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."

Restricţii şi precizări[edit | edit source]

  • numerele citite aparțin intervalului (-1.000.000;1.000.000)
  • valoarea zero, care încheie citirile, nu se va prelucra

Exemplul 1[edit | edit source]

Intrare
Introduceți primul număr: 15
Introduceți al doilea număr: 63
Introduceți următorul număr: 403
Introduceți următorul număr: 123
Introduceți următorul număr: 55
Introduceți următorul număr: 15
Introduceți următorul număr: 4
Introduceți următorul număr: 0
Ieșire
Datele introduse corespund cerintelor.
3


Exemplul 2[edit | edit source]

Intrare
Introduceți primul număr: 200000000000000000000000000000000000
Ieșire
Datele introduse nu corespund cerințelor.


Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

  1. 0056

def count_matching_digits(num1, num2):

   """
   Returnează numărul de cifre identice dintre cele două numere primite ca argumente.
   """
   count = 0
   while num2:
       if num1 % 10 == num2 % 10:
           count += 1
       num1 = num2
       num2 = int(input("Introduceți un număr: "))
       if num2 == 0:
           break
   return count


def validate_input(num):

   """
   Verifică dacă numărul dat ca argument aparține intervalului (-1.000.000; 1.000.000).
   """
   if num == 0:
       print("Datele introduse nu corespund cerintelor.")
       exit()
       return False
   if num < -1000000 or num > 1000000:
       print("Datele introduse nu corespund cerintelor.")
       exit()
       return False
   return True


if __name__ == "__main__":

   num1 = int(input("Introduceți primul număr: "))
   while not validate_input(num1):
       num1 = int(input("Introduceți primul număr: "))
   num2 = int(input("Introduceți al doilea număr: "))
   while not validate_input(num2):
       num2 = int(input("Introduceți al doilea număr: "))
   count = count_matching_digits(num1, num2)
   print(f"Datele introduse corespund cerintelor.\n{count}")


</syntaxhighlight>

Explicatie rezolvare[edit | edit source]

Acest program conține două funcții și o secțiune principală de cod care le folosește.

1. Funcția "count_matching_digits(num1, num2)" primește doi parametri de tip întreg și returnează numărul de cifre identice dintre cele două numere. Funcția utilizează un ciclu "while" pentru a parcurge cifrele din ambele numere. În fiecare iterație, se verifică dacă ultima cifră a fiecărui număr este identică și, dacă da, se adaugă 1 la contorul "count". Apoi, ultima cifră a fiecărui număr este eliminată prin împărțirea la 10, până când numărul doi ajunge la zero. La final, funcția returnează valoarea contorului "count".

2. Funcția "validate_input(num)" primește un parametru de tip întreg și verifică dacă numărul se încadrează în intervalul (-1.000.000, 1.000.000). Dacă numărul nu se încadrează în interval, funcția afișează un mesaj de eroare și oprește programul utilizând funcția "exit()". În caz contrar, funcția returnează valoarea "True".

În secțiunea principală a programului, utilizatorul introduce două numere folosind funcția "input()". Apoi, fiecare număr este validat utilizând funcția "validate_input(num)" și, dacă numerele sunt valide, funcția "count_matching_digits(num1, num2)" este apelată pentru a calcula numărul de cifre comune între cele două numere. Dacă cele două numere sunt invalide, programul va continua să solicite introducerea unor numere valide utilizând o buclă "while". La final, programul afișează numărul de cifre comune.