Предмет: Информатика,
автор: sbesuicide
В ПАСКАЛЕ
Даны два натуральных числа a и b. Вывести a/b в виде периодической дроби.
Например: 1/3=0,(3)
Аноним:
Каждый год одни и те же задачи...
Просто хз как тут код написать
Ответы
Автор ответа:
0
// PascalABC.NET 3.4.2, сборка 1797 от 22.09.2018
// Внимание! Если программа не работает, обновите версию!
function CycleFraction(a, b: integer): string;
begin
Result := (a div b).ToString;
a := a mod b;
if a = 0 then exit;
Result += ','; // разделитель
var k := Result.Length + 1;
var ost := new SortedList<integer, integer>;
ost.Add(a, k);
while True do
begin
a *= 10;
Result += (a div b).ToString;
a := a mod b;
if ost.ContainsKey(a) then
begin
var p := ost.Get(a);
Result := Result?[:p] + (a <> 0 ? '(' + Result?[p:] + ')' : ''.ToString);
exit
end
else
begin
k += 1;
ost.Add(a, k);
end
end
end;
begin
var (a, b) := ReadInteger2('Введите числитель и знаменатель:');
CycleFraction(a, b).Println;
end.
Приложения:
Похожие вопросы
Предмет: География,
автор: farysa222
Предмет: Русский язык,
автор: pixel228pro42
Предмет: Математика,
автор: dulattrebek
Предмет: Математика,
автор: ZaiLA1
Предмет: Алгебра,
автор: Nonononono1