![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
marwell |
![]() ![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 198 Пол: Мужской Репутация: ![]() ![]() ![]() |
с помощью процедуры Socr привести дробь 1+1/2+1/3+1/4+1/5+...+1/20 к несократимому виду
var a_1,a_2,b_1,b_2,p,q:integer;
function NOD(a:integer; b:integer):integer;
begin
while(a<>0) and (b<>0) do
if a>=b then a:=a mod b
else b:=b mod a;
NOD:=a+b;
end;
function NOK (A: integer; B: integer): integer;
begin
NOK := (a * b) div NOD (a, b);
end;
procedure Socr(a,b:integer; var p,q:integer);
begin
if a=b then begin
p:=1;
q:=1;
end
else if NOD (a, b)<>1 then
begin
p:=a div NOD(a, b);
q:=b div NOD(a, b);
end
else Writeln ('дробь несократима');
end;
begin
a_1:=1;
a_2:=1;
b_1:=1;
for b_2:=2 to 21 do
begin
a_1:=(NOK(b_1, b_2) div b_1)*a_1;
a_1:=a_1+((NOK(b_1, b_2) div b_2)*a_2);
b_1:=NOK(b_1, b_2);
end;
writeln (a_1,'/',b_1);
Socr(a_1,b_1,p,q);
Writeln (p,'/',q);
readln;
end.
посмотрите, please, правильно? |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Какая разница, там должно было быть то же самое...
Я ж говорил тебе - найди процедуру сложения дробей, и используй. Вот здесь все, что нужно, кроме основной программы: Процедуры и функции Основная программа выглядит так: var
curr: ratio;
i: integer;
const
res: ratio = (num:0; denom:1);
begin
for i := 1 to 20 do
begin
curr.num := 1; curr.denom := i;
add_ratio(res, curr);
end;
writeln(res.num, '/', res.denom);
end.
Тем более, если у тебя Дельфи (тогда тему надо было создавать в "32-битных компиляторах", если консольное приложение, или в разделе "Дельфи" - если оконное) - которая может возвращать результат - запись, тогда можно сделать функции сложения/сокращения дробей, и все вообще запишется в одну строку... |
![]() ![]() |
![]() |
Текстовая версия | 29.07.2025 8:28 |