#592 · Subiectul II · Programare
Suma fracțiilor ireductibile (struct fractie: cmmdc și suma)
✓ Rezolvare explicatăBucurești 2020 · nr. 20
Enunț
Fișierul atestat.in conține pe prima linie un număr natural n (2≤n≤100), iar pe următoarele n linii câte două numere întregi x și y de cel mult 9 cifre, numărătorul și numitorul unei fracții algebrice. Fracția se memorează cu structura:
struct fractie { int x, y; };
Se consideră subprogramele:
cmmdc, cu doi parametriașib(numere întregi de cel mult 9 cifre): returnează cel mai mare divizor comun al lor;suma, cu doi parametrifșigde tipfractie: returnează suma celor două fracții.
a. Scrieți definiția completă a subprogramului cmmdc.
b. Scrieți definiția completă a subprogramului suma.
c. Scrieți un program care citește datele din atestat.in și, folosind apeluri utile ale subprogramelor cmmdc și suma, scrie în atestat.out, pe prima linie, suma fracțiilor ireductibile din fișier sub forma x/y (fracție ireductibilă), iar pe următoarele linii fracțiile ireductibile, câte una pe linie, sub forma x/y. Dacă fișierul nu conține fracții ireductibile, se scrie nu exista.
⚠️ Inconsecvență în exemplul oficial. Exemplul are
n = 7, dar listează 8 fracții (ultima:5 20). Se citesc doar primele 7; rezultatul nu s-ar schimba oricum, fiindcă5/20se simplifică prin5.
Exemple
atestat.in |
atestat.out |
Explicații |
|---|---|---|
72 34 167 153 712 2834 689 20 |
169/842/37/153/79/20 |
Sunt ireductibile 2/3, 7/15, 3/7, 9/20; suma lor este 845/420 = 169/84 |
Rezolvare
Exersează mai departe