Cod sursa(job #230188)
/*se citesc de la tastatura n fractii
sa se determine suma acestor fractii
(7,6); (1,3); (4,16); (2,5)
(43,20)*/
#include<fstream.h>
#define fin"fractii.in"
#define fout"fractii.out"
int main()
{
int n, a, b, i, r, A, B, x, y, num;
/*A, B semnifica fractia rezulktat a, b, fractia curenta*/
ifstream in(fin);
in>>A>>B;
in>>n;
for(i=1; i<=n; i++)
{
in>>a;
do
{
in>>b;
in.close();
ofstream out(fout);
if(b==0) out<<"operatie imposibila";
out.close();
}
while(b==0);
{ x=a;
y=b;
r=x%y;
}
while(r!=1)
{
x=y;
y=r;
r=x%y;
}
if(y!=1)
{
a=a/y;
b=b/y;
}
x=B;
y=b;
r=x%y;
while(r!=0)
{
x=y;
y=r;
r=x%y;
}
num=b*B/y;
A=A*(num/B)+a*(num/b);
B=num;
x=A;
y=B;
r=x%y;
while(r!=0)
{
x=y;
y=r;
r=x%y;
}
if(y!=1)
{
A=A/y;
B=B/y;
}
}
ofstream out(fout);
out<<A/B<<"\n";
out.close();
return 0;
}