0391 - Fractii: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == 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 == 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 == Programul afișează pe ecran numerele '''numarator1''' '''numitor1''', separate prin exact...
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 17: Line 17:
: 4 2
: 4 2
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 11 3
: 11 3
== Exemplu2 ==
== Exemplu2 ==
Line 26: Line 26:
: 9 10
: 9 10
; Ieșire
; Ieșire
: Datele introduse corespund restricțiilor impuse.
: Datele de intrare corespund restricțiilor impuse.
: 57 10
: 57 10
== Rezolvare ==
== Rezolvare ==
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]

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]

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]

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]

  • n ∈ Ν
  • 1 ⩽ n ⩽ 10
  • numărătorul şi numitorul fiecărei fracţii sunt numere naturale cu cel mult două cifre

Exemplu1[edit]

Intrare
4
1 3
5 6
1 2
4 2
Ieșire
Datele de intrare corespund restricțiilor impuse.
11 3

Exemplu2[edit]

Intrare
3
4 5
8 2
9 10
Ieșire
Datele de intrare corespund restricțiilor impuse.
57 10

Rezolvare[edit]

<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]

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.