![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 07.10.2009
Сообщений: 23
|
![]()
В задаче необходимо найти несократимую дробь, являющуюся суммой двух данных дробей. Нахожу НОД (наименьший общий делитель) и делю дробь на него до тех пор пока он не станет равен 1 (НОД для всех дробей). Почему то на выходе получаются разные типы, хотя при делении на НОД целого числа, по определению должно получится целое.
program nesokr; {$APPTYPE CONSOLE} uses SysUtils; var a,b,e,f,c,d,p,q:integer; function nod(var a, b: integer): integer; begin if (a = 0) or (b = 0) then nod:= 1 else if a >= b then begin a := a mod b; nod:= nod(a, b); end else begin b := b mod a; nod:= nod(a, b); end; end; begin a:=2; b:=3;c:=3; d:=4; p:=a*d+c*b; q:=b*d; while nod(p,q)>1 do begin p:=p/nod(p,q); q:=q/nod(p,q); end; writeln ('Несократимая дробь =',p,'/',q) end. |
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 07.10.2009
Сообщений: 23
|
![]()
НАщел другое нахождение НОДа, но все равно программа не хочет работать
program nesokr; {$APPTYPE CONSOLE} uses SysUtils; var a,b,e,f,c,d,p,q:integer; function nod(var a, b: integer): integer; begin while (a<>0)and(b<>0) do if a>b then a :=a mod b else b:=b mod a; if a=0 then result:=b else result:=a; end; begin a:=2; b:=3;c:=3; d:=4; p:=a*d+c*b; q:=b*d; while nod(p,q)>1 do begin p:=p/nod(p,q); q:=q/nod(p,q); end; writeln ('Несократимая дробь =',p,'/',q) end. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Переделать дробь в натуральное число | pro100-delphi | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 26.09.2009 08:24 |