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

Ответы на вопрос

// 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 в виде периодической дроби на языке программирования Pascal, вы можете использовать алгоритм деления с остатком. Вот пример кода, который реализует это:
```pascal program PeriodicFraction;
var a, b: Integer;
begin Write('Введите числитель a: '); Readln(a); Write('Введите знаменатель b: '); Readln(b);
if b = 0 then Writeln('Деление на ноль невозможно.') else begin Write('Результат a/b в виде периодической дроби: '); Write(a div b); // Вывод целой части
a := a mod b; // Вычисление остатка Write('.');
// Создаем словарь, где ключ - остаток, а значение - позиция, на которой остаток встречается var remainderMap: array[0..b-1] of Integer;
while (a <> 0) and (remainderMap[a] = 0) do begin remainderMap[a] := Length(Result); a := a * 10; Write(a div b); a := a mod b; end;
if a <> 0 then begin WriteLn; Write('Периодическая часть: ');
// Вывод периодической части for var i := 1 to Length(Result) do begin if i = remainderMap[a] then Write('(');
Write(Result[i]);
if i = Length(Result) then Write(')') else if i = 50 then begin Write('...'); Break; end; end; end;
WriteLn; end; end. ```
Этот код сначала получает числитель `a` и знаменатель `b` от пользователя. Затем он выполняет деление с остатком и сохраняет остатки и позиции их встречи в словаре. При выводе результатов, код обрабатывает целую часть, десятичную точку и периодическую часть числа.


Похожие вопросы
Топ вопросов за вчера в категории Информатика









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