В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
YuliaPyatova
YuliaPyatova
15.05.2023 01:56 •  Информатика

Впаскале даны два натуральных числа a и b. вывести a/b в виде периодической дроби. например: 1/3=0,(3)

Показать ответ
Ответ:
vladgorbatov1
vladgorbatov1
09.10.2020 00:53
// 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.


Впаскале даны два натуральных числа a и b. вывести a/b в виде периодической дроби. например: 1/3=0,(
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота