Составить программу для умножения дроби на дробь (результат должен быть несократимой дробью) - C (СИ)
Формулировка задачи:
Даны две дроби A/B и C/D (A, B, C, D – натуральные числа). Составить программу для умножения дроби на дробь. Результат должен быть несократимой дробью. C помощью пользовательских функций.
HELP
#include<stdio.h>
#include<conio.h>
int f(int F,int G)
{ if(F>G)
{int i=G;
while(i>1)
{if((F%i==0)&&(G%i==0))
i=i-1
else (i=F);}
while(i>1)
if((F%i==0)&&(G%i==0))
i=i-1;
else {return (i)}}
return(i);}}
int main(){;
int A,B,C,D,F,G,i;
int k;
printf("VVedite A,B,C,D\n");
scanf(" %i%i%i%i",&A,&B,&C,&D);
F=A*C; G=B*D;
k=f(F,G);
F=F/k;G=G/k;
printf("F/G=%i",F,G);
getch();
return 0;
}Решение задачи: «Составить программу для умножения дроби на дробь (результат должен быть несократимой дробью)»
textual
Листинг программы
#include<stdio.h>
#include<conio.h>
int f(int F,int G)
{
int i=1;
if(F>G)
{
for(i=G;i>1;i--)
if(F%i==0)
return i;
}else
{
for(i=F;i>1;i--)
if(G%i==0)
return i;
}
return i;
}
int main()
{
int A,B,C,D,F,G;
int k;
printf("VVedite A,B,C,D\n");
scanf("%i%i%i%i",&A,&B,&C,&D);
F=A*C; G=B*D;
k=f(F,G);
F=F/k;G=G/k;
printf("F/G=%i/%i",F,G);
getch();
return 0;
}
Объяснение кода листинга программы
- Программа начинается с функции f(int F,int G), которая принимает два целых числа F и G.
- Внутри функции происходит итерация циклом от большего числа к меньшему (G к 1).
- На каждой итерации проверяется, делится ли F на текущее значение i без остатка.
- Если F делится на i без остатка, то возвращается это значение i.
- Если F не делится на i без остатка, то цикл продолжается.
- Если цикл завершается без возврата значения, то возвращается 1.
- В функции main() происходит запрос на ввод четырех целых чисел A, B, C и D.
- Затем происходит расчет F и G как произведения A на C и B на D соответственно.
- Результат функции f(F,G) сохраняется в переменной k.
- Затем происходит деление F и G на k.
- Результат выводится на экран в формате
F/G=<результат>. - Программа завершается вызовом функции getch() и возвратом 0.