0923 - Fractii Max: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se dau '''4''' numere naturale '''a b c d''', reprezentând fracţiile '''a/b''' şi '''c/d'''. Determinați și afișați cea mai mare dintre cele două fracții. == Date de intrare == Programul citește de la tastatură numerele '''a b c d'''. == Date de ieşire == Programul afișează pe ecran numerele '''m n''', separate prin exact un spațiu, reprezentând numărătorul şi numitorul fracției maxime, adusă la forma ireductibilă. == Restricții și preci...
 
No edit summary
Line 9: Line 9:
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
: 7 14 24 18
: 7  
: 14  
: 24  
: 18
; Ieșire
; Ieșire
: Datele de intrare corespund restricțiilor impuse.
: 4 3
: 4 3
== Exemplul 2 ==
; Intrare
: 4
: 9
: 15
: 100000
; Ieșire
: Datele introduse nu corespund restricțiilor impuse.
== Explicație ==
== Explicație ==
Fracția maximă este '''24/18'''. Prin simplificare devine '''4/3'''.
Fracția maximă este '''24/18'''. Prin simplificare devine '''4/3'''.
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# Definim funcția
# 0923  Fractii Max
def frac_max(x, y):
def verificare(valoare_numar):
     while(y):
    # Verificăm dacă numărul este între 1 și 10000
         x, y = y, x % y
    if 1 <= valoare_numar <= 10000:
     return x
        return valoare_numar    # Dacă este, returnăm numărul
    else:
        raise ValueError    # Dacă nu este, ridicăm o excepție
 
 
def cmmdc(valoare1, valoare2):
    # Folosim algoritmul lui Euclid pentru a găsi cmmdc
     while valoare2:
         valoare1, valoare2 = valoare2, valoare1 % valoare2
     return valoare1    # Returnăm cmmdc
 
 
if __name__ == "__main__":
    try:
        # Citim numerele de la utilizator
        a = input("Introduceți numărătorul primei fracții: ")
        b = input("Introduceți numitorul primei fracții: ")
        c = input("Introduceți numărătorul celei de-a doua fracții: ")
        d = input("Introduceți numitorul celei de-a doua fracții: ")
 
        # Validăm numerele folosind funcția de verificare
        a = verificare(int(a))
        b = verificare(int(b))
        c = verificare(int(c))
        d = verificare(int(d))
        print("Datele de intrare corespund restricțiilor impuse.")


# Introducem valorile
        # Calculăm valorile fracțiilor
a = int(input())
        frac1 = a / b
b = int(input())
        frac2 = c / d
c = int(input())
d = int(input())


# Calculăm valoarea fracțiilor
        # Verificăm care fracție este mai mare și o simplificăm
frac1 = a / b
        if frac1 > frac2:
frac2 = c / d
            cmmdc_val = cmmdc(a, b)    # Calculăm cmmdc pentru a și b
            print(a // cmmdc_val, b // cmmdc_val)    # Afișăm fracția simplificată
        else:
            cmmdc_val = cmmdc(c, d)    # Calculăm cmmdc pentru c și d
            print(c // cmmdc_val, d // cmmdc_val)    # Afișăm fracția simplificată
    except ValueError:
        print("Datele introduse nu corespund restricțiilor impuse.")


# Verificăm care fracție este mai mare și o simplificăm
if frac1 > frac2:
    frac_max_val = frac_max(a, b)
    print(a // frac_max_val, b // frac_max_val)
else:
    frac_max_val = frac_max(c, d)
    print(c // frac_max_val, d // frac_max_val)


</syntaxhighlight>
</syntaxhighlight>

Revision as of 13:11, 10 November 2023

Cerinţa

Se dau 4 numere naturale a b c d, reprezentând fracţiile a/b şi c/d. Determinați și afișați cea mai mare dintre cele două fracții.

Date de intrare

Programul citește de la tastatură numerele a b c d.

Date de ieşire

Programul afișează pe ecran numerele m n, separate prin exact un spațiu, reprezentând numărătorul şi numitorul fracției maxime, adusă la forma ireductibilă.

Restricții și precizări

  • 1 ⩽ a, b, c, d ⩽ 10000

Exemplu

Intrare
7
14
24
18
Ieșire
Datele de intrare corespund restricțiilor impuse.
4 3

Exemplul 2

Intrare
4
9
15
100000
Ieșire
Datele introduse nu corespund restricțiilor impuse.

Explicație

Fracția maximă este 24/18. Prin simplificare devine 4/3.

Rezolvare

<syntaxhighlight lang="python" line>

  1. 0923 Fractii Max

def verificare(valoare_numar):

   # Verificăm dacă numărul este între 1 și 10000
   if 1 <= valoare_numar <= 10000:
       return valoare_numar    # Dacă este, returnăm numărul
   else:
       raise ValueError    # Dacă nu este, ridicăm o excepție


def cmmdc(valoare1, valoare2):

   # Folosim algoritmul lui Euclid pentru a găsi cmmdc
   while valoare2:
       valoare1, valoare2 = valoare2, valoare1 % valoare2
   return valoare1    # Returnăm cmmdc


if __name__ == "__main__":

   try:
       # Citim numerele de la utilizator
       a = input("Introduceți numărătorul primei fracții: ")
       b = input("Introduceți numitorul primei fracții: ")
       c = input("Introduceți numărătorul celei de-a doua fracții: ")
       d = input("Introduceți numitorul celei de-a doua fracții: ")
       # Validăm numerele folosind funcția de verificare
       a = verificare(int(a))
       b = verificare(int(b))
       c = verificare(int(c))
       d = verificare(int(d))
       print("Datele de intrare corespund restricțiilor impuse.")
       # Calculăm valorile fracțiilor
       frac1 = a / b
       frac2 = c / d
       # Verificăm care fracție este mai mare și o simplificăm
       if frac1 > frac2:
           cmmdc_val = cmmdc(a, b)    # Calculăm cmmdc pentru a și b
           print(a // cmmdc_val, b // cmmdc_val)    # Afișăm fracția simplificată
       else:
           cmmdc_val = cmmdc(c, d)    # Calculăm cmmdc pentru c și d
           print(c // cmmdc_val, d // cmmdc_val)    # Afișăm fracția simplificată
   except ValueError:
       print("Datele introduse nu corespund restricțiilor impuse.")


</syntaxhighlight>