• В ПАСКАЛЕ
    Даны два натуральных числа a и b. Вывести a/b в виде периодической дроби.
    Например: 1/3=0,(3)

Ответы 1

  • // 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.

    answer img
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years