![]() |
![]() |
Artem7 |
![]() ![]()
Сообщение
#1
|
![]() Пионер ![]() ![]() Группа: Пользователи Сообщений: 54 Пол: Мужской Репутация: ![]() ![]() ![]() |
Никак не могу придумать по которому бы определялось длина периода 1/n (n любое число)
|
![]() ![]() |
IUnknown |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 013 Пол: Мужской Ада: Разработчик Embarcadero Delphi: Сторонник Free Pascal: Разработчик Репутация: ![]() ![]() ![]() |
Цитата Что то я не совсем понял как работает твой код не мог бы ты объяснить?! По ссылке, которую я давал там, в теме "дроби", ходил? Там есть объяснение алгоритма. И для случая M=1 тожеЦитата Вот сделал так чтоб длину периода находило Зачем приплетены строки? Зачем хранить дробь? Что, в моем коде есть где-то работа со строками, где-то хранится вещественное значение? Нет этого. И тебе не надо:const
p = 10;
m = 1;
var
n, i, j, k: integer;
len : integer;
begin
len := 0;
n := 7; { <--- или Readln(n); }
write(m, '/', n, ' длина периода :');
k := 1;
while(k <= n) or (j <> m) do
begin
if k = n then j := m;
i := p*m div n;
m := p*m mod n;
if k >= n then inc(len);
inc(k);
end;
writeln(len);
end.
И не надо отказываться от констант. Переменные ни разу не лучше. |
![]() ![]() |
![]() |
Текстовая версия | 15.04.2025 7:27 |