помогите решить с кратким объяснением(если можно).(пробовал сам но не удаётся 'Реузультат должен быть несократимой дробью"-выполнить это условие .) 14. Даны две дроби A/B и C/D (A,B,C,D-натуральные числа). Составить программу для вычитания из первой дроби второй. Реузультат должен быть несократимой дробью.
на каком этапе остановился? 1)читаешь две дроби(четыре целых числа) 2)считаешь числитель и знаменатель для результирующей дроби 3)сокращаешь дробь 3а) поиск НОД-а 3б) деление числителя и знаменателя на НОД 4)вывод результата
MiH@N
14.01.2008 2:06
так прафильно будет?
undefinedprogram program zadanie 3; uses crt; function nod(a,b:integer):integer; begin while a<>b do if a>b then a:=a-b else b:=b-a; nod:=a; end;
function nok(a,b:integer):integer; begin nok:=round((a*b)/nod(a,b)); end;
procedure minus(a,b,c,d:integer;var x,y:integer); var m:integer; begin x:=a*(nok(b,d) div b)-c*(nok(b,d) div d); y:=nok(b,d); m:=nod(abs(x),y); x:=x div m; y:=y div m; end;
var n1,n2,m1,m2,x,y:integer; begin clrscr; write('Введите числитель первой дроби: ');readln(n1); repeat write('Введите знаменатель первой дроби: ');readln(n2); until n2>0; write('Введите числитель второй дроби: ');readln(m1); repeat write('Введите знаменатель второй дроби: ');readln(m2); until m2>0; minus(n1,n2,m1,m2,x,y); clrscr; if m1>=0 then writeln(n1,'/',n2,'-',m1,'/',m2,'=',x,'/',y) else writeln(n1,'/',n2,'-(',m1,'/',m2,')=',x,'/',y); readkey; end.
compiler
14.01.2008 2:30
замечательно! только следует добавить одно условие
if x<>0 then begin m:=nod(abs(x),y); x:=x div m; y:=y div m; end;
MiH@N
14.01.2008 2:52
а такое условие не нужно :
If b<0 or d<0 then...
Добавлено через 10 мин.
Цитата(compiler @ 13.01.2008 21:30)
замечательно! только следует добавить одно условие
а можно поточнее-куда добавить??
compiler
14.01.2008 3:06
Цитата(MiH@N @ 13.01.2008 21:52)
а такое условие не нужно
ты ж вроде это при чтении проверяешь
Цитата(MiH@N @ 13.01.2008 21:52)
а можно поточнее-куда добавить??
в процедуру minus, противном случае если отнять два равных числа получим глюк)
MiH@N
14.01.2008 3:13
а в блок-схеме как это намалевать?
compiler
14.01.2008 3:26
Цитата(MiH@N @ 13.01.2008 22:13)
а в блок-схеме как это намалевать?
по поиску можешь найти программы которые это сделают...
MiH@N
15.01.2008 0:37
Цитата(compiler @ 13.01.2008 22:26)
по поиску можешь найти программы которые это сделают...
а пару ссылок на наиболее грамотные подкинуть не можешь?.. ато скачал несколько...одна с треском и шумом но всёж коряво работает а другая вообще pas.-ы не грузит(хотя должна).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.