0391 - Fractii: Difference between revisions
Robert Manc (talk | contribs) No edit summary |
Robert Manc (talk | contribs) No edit summary |
||
Line 69: | Line 69: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicație == | |||
Codul primește la intrare un număr întreg n, urmat de două numere întregi a și b, și apoi primește încă n-1 perechi de numere întregi. Programul calculează suma fracțiilor primite la intrare și afișează rezultatul sub forma unei fracții ireductibile. | |||
Funcția '''suma''' primește numărul de fracții ce urmează a fi adunate, numărătorul și numitorul primei fracții. Apoi, pentru fiecare fracție următoare, se face următoarele: se citește perechea de numere, se verifică dacă aceasta respectă restricțiile impuse prin intermediul funcției '''validare_date''', se adună fracția la suma totală și se simplifică rezultatul. | |||
Dacă toate datele de intrare sunt valide, programul afișează suma fracțiilor. |
Latest revision as of 16:01, 28 April 2023
Cerinţa[edit | edit source]
Se dau n perechi de numere naturale nenule, fiecare reprezentând câte o fracţie. Calculaţi suma celor n fracţii, aducând rezultatul la forma ireductibilă.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n perechi de numere naturale, reprezentând numărătorul şi numitorul unei fracţii.
Date de ieşire[edit | edit source]
Programul afișează pe ecran numerele numarator1 numitor1, separate prin exact un spaţiu, reprezentând numărătorul şi numitorul fracţiei sumă, adusă la forma ireductibilă.
Restricții și precizări[edit | edit source]
- n ∈ Ν
- 1 ⩽ n ⩽ 10
- numărătorul şi numitorul fiecărei fracţii sunt numere naturale cu cel mult două cifre
Exemplu1[edit | edit source]
- Intrare
- 4
- 1 3
- 5 6
- 1 2
- 4 2
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 11 3
Exemplu2[edit | edit source]
- Intrare
- 3
- 4 5
- 8 2
- 9 10
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 57 10
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> import math
def validare_date(numar, numere):
flag = False if 0 < int(numar) < 10 and len(numere) == 2: flag = all(isinstance(x, int) and 1 <= x <= 1_000_000_000 for x in numere) return flag
def suma(n, numarator1, numitor1):
date = True for i in range(n-1): pereche = input().split() if validare_date(pereche[0], [int(pereche[0]), int(pereche[1])]): numarator2, numitor2 = int(pereche[0]), int(pereche[1]) numarator1 = numarator1 * numitor2 + numarator2 * numitor1 numitor1 = numitor1 * numitor2 cmmdc = math.gcd(numarator1, numitor1) numarator1 = numarator1 // cmmdc numitor1 = numitor1 // cmmdc else: print("Datele de intrare nu corespund restrictiilor impuse.") date = False break if date: print("\nDatele de intrare corespund restricțiilor impuse.\n") print(numarator1, numitor1)
if __name__ == '__main__':
n = int(input()) a, b = map(int, input().split()) if validare_date(n, [a, b]): suma(n, a, b) else: print("Datele de intrare nu corespund restrictiilor impuse.")
</syntaxhighlight>
Explicație[edit | edit source]
Codul primește la intrare un număr întreg n, urmat de două numere întregi a și b, și apoi primește încă n-1 perechi de numere întregi. Programul calculează suma fracțiilor primite la intrare și afișează rezultatul sub forma unei fracții ireductibile.
Funcția suma primește numărul de fracții ce urmează a fi adunate, numărătorul și numitorul primei fracții. Apoi, pentru fiecare fracție următoare, se face următoarele: se citește perechea de numere, se verifică dacă aceasta respectă restricțiile impuse prin intermediul funcției validare_date, se adună fracția la suma totală și se simplifică rezultatul.
Dacă toate datele de intrare sunt valide, programul afișează suma fracțiilor.