2747 - Log: Difference between revisions

From Bitnami MediaWiki
Paul Ungur (talk | contribs)
Paul Ungur (talk | contribs)
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 6: Line 6:


==Date de ieșire==
==Date de ieșire==
Programul va afișa pe ecran exponentul la care se ridică <span style="color: red;"> n <span> pentru a obține <span style="color: red;"> m</span>.
Dacă datele sunt introduse corect, pe ecran se va afișa: '''"Datele sunt introduse corect."''', apoi programul va afișa pe ecran exponentul la care se ridică <span style="color: red;"> n </span> pentru a obține <span style="color: red;"> m</span>. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: '''"Datele nu corespund restricțiilor impuse."'''


==Restricții și precizări==
==Restricții și precizări==
Line 14: Line 14:


==Exemplu:==
==Exemplu:==
Intrare
: Intrare
2 4
: 2 4


Ieșire
Ieșire
2
: Datele sunt introduse corect
: 2


==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="1">
<syntaxhighlight lang="python" line="1">
def validate_input(n, m):
def validare_date(n, m):
    #Validare input
     if not (1 <= n <= 1000000) or not (1 <= m <= 1000000):
     if not (1 <= n <= 1000000) or not (1 <= m <= 1000000):
         print("n și m trebuie să fie între 1 și 1.000.000.")
         print("n și m trebuie să fie între 1 și 1.000.000.")
Line 38: Line 38:
def compute_exponent(n, m):
def compute_exponent(n, m):
     #Determină exponentul la care trebuie ridicat n pentru a obține m.
     #Determină exponentul la care trebuie ridicat n pentru a obține m.
     exponent = 0
     exponent = 1
     while m > n:
     while m > n:
         m //= n
         m //= n
         exponent += 1
         exponent += 1
     return exponent
     print(f"Exponentul la care trebuie ridicat {n} pentru a obține {m} este: {exponent}")




def main():
if __name__ == "__main__":
     # Citire input și validare
     # Citire input și validare
     n, m = map(int, input("Introduceți n și m, separate prin spațiu: ").split())
     n, m = map(int, input("Introduceți n și m, separate prin spațiu: ").split())
     while not validate_input(n, m):
     if validare_date(n, m):
        n, m = map(int, input("Introduceți n și m, separate prin spațiu: ").split())
        exponent = compute_exponent(n, m)
    else:
        while not validare_date(n, m):
            n, m = map(int, input("Introduceți n și m, separate prin spațiu: ").split())
</syntaxhighlight>
==Explicatie cod:==
Codul Python de mai sus definește două funcții: validare_date și compute_exponent. Iată o explicație pentru fiecare dintre ele:


    # Calcul și afișare rezultat
Funcția validare_date(n, m):
    exponent = compute_exponent(n, m)
Această funcție primește doi parametri, n și m, reprezentând două numere întregi.
    print(f"Exponentul la care trebuie ridicat {n} pentru a obține {m} este: {exponent}")
Verifică mai multe condiții pentru a valida datele introduse:
Verifică dacă n și m sunt ambele între 1 și 1.000.000. Dacă nu sunt, afișează un mesaj de eroare și returnează False.
Verifică dacă n este diferit de 1. Dacă nu este, afișează un mesaj de eroare și returnează False.
Verifică dacă m este o putere a lui n. Dacă nu este, afișează un mesaj de eroare și returnează False.
Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide.
Funcția compute_exponent(n, m):
Această funcție primește doi parametri, n și m, reprezentând două numere întregi.
Funcția calculează exponentul la care trebuie ridicat n pentru a obține m.
Inițial, exponentul este setat la 1. Apoi, într-un ciclu while, m este împărțit la n până când m devine mai mic sau egal cu n. În fiecare iterație, exponentul este incrementat cu 1.
La final, funcția afișează exponentul.
În cadrul secțiunii if __name__ == "__main__": se realizează următoarele acțiuni:


 
Se citește de la tastatură două numere întregi separate prin spațiu, n și m, și sunt convertite în variabilele corespunzătoare.
if __name__ == "__main__":
Se apelează funcția validare_date(n, m) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția compute_exponent(n, m) pentru a calcula și afișa exponentul.
    main()
Dacă datele nu sunt valide, se intră într-un ciclu while până când se introduc date valide. În fiecare iterație se solicită introducerea valorilor n și m, iar apoi se reevaluează validitatea acestora. Ciclul se oprește când se introduc date valide și se calculează și afișează exponentul corespunzător.
</syntaxhighlight>

Latest revision as of 18:00, 29 June 2023

Cerința[edit | edit source]

Se dau numerele n și m. Să se determine exponentul la care se ridică n pentru a obține m.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n și m, separate prin spații.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt introduse corect.", apoi programul va afișa pe ecran exponentul la care se ridică n pentru a obține m. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."

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

1 ≤ n , m ≤ 1.000.000 n ≠ 1 se garantează ca m este putere a lui n</span.

Exemplu:[edit | edit source]

Intrare
2 4

Ieșire

Datele sunt introduse corect
2

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def validare_date(n, m):

   if not (1 <= n <= 1000000) or not (1 <= m <= 1000000):
       print("n și m trebuie să fie între 1 și 1.000.000.")
       return False
   if n == 1:
       print("n trebuie să fie diferit de 1.")
       return False
   if m % n != 0:
       print("m trebuie să fie putere a lui n.")
       return False
   return True


def compute_exponent(n, m):

   #Determină exponentul la care trebuie ridicat n pentru a obține m.
   exponent = 1
   while m > n:
       m //= n
       exponent += 1
   print(f"Exponentul la care trebuie ridicat {n} pentru a obține {m} este: {exponent}")


if __name__ == "__main__":

   # Citire input și validare
   n, m = map(int, input("Introduceți n și m, separate prin spațiu: ").split())
   if validare_date(n, m):
       exponent = compute_exponent(n, m)
   else:
       while not validare_date(n, m):
           n, m = map(int, input("Introduceți n și m, separate prin spațiu: ").split())

</syntaxhighlight>

Explicatie cod:[edit | edit source]

Codul Python de mai sus definește două funcții: validare_date și compute_exponent. Iată o explicație pentru fiecare dintre ele:

Funcția validare_date(n, m): Această funcție primește doi parametri, n și m, reprezentând două numere întregi. Verifică mai multe condiții pentru a valida datele introduse: Verifică dacă n și m sunt ambele între 1 și 1.000.000. Dacă nu sunt, afișează un mesaj de eroare și returnează False. Verifică dacă n este diferit de 1. Dacă nu este, afișează un mesaj de eroare și returnează False. Verifică dacă m este o putere a lui n. Dacă nu este, afișează un mesaj de eroare și returnează False. Dacă toate verificările sunt trecute fără a găsi probleme, funcția returnează True, semnalând că datele sunt valide. Funcția compute_exponent(n, m): Această funcție primește doi parametri, n și m, reprezentând două numere întregi. Funcția calculează exponentul la care trebuie ridicat n pentru a obține m. Inițial, exponentul este setat la 1. Apoi, într-un ciclu while, m este împărțit la n până când m devine mai mic sau egal cu n. În fiecare iterație, exponentul este incrementat cu 1. La final, funcția afișează exponentul. În cadrul secțiunii if __name__ == "__main__": se realizează următoarele acțiuni:

Se citește de la tastatură două numere întregi separate prin spațiu, n și m, și sunt convertite în variabilele corespunzătoare. Se apelează funcția validare_date(n, m) pentru a verifica validitatea datelor. Dacă datele sunt valide, se apelează funcția compute_exponent(n, m) pentru a calcula și afișa exponentul. Dacă datele nu sunt valide, se intră într-un ciclu while până când se introduc date valide. În fiecare iterație se solicită introducerea valorilor n și m, iar apoi se reevaluează validitatea acestora. Ciclul se oprește când se introduc date valide și se calculează și afișează exponentul corespunzător.