Вопрос задан 27.10.2023 в 07:09. Предмет Информатика. Спрашивает Тлектес Айгерим.

Правильная дробь называется интересной, если после вычеркивания в числителе и знаменателе всех

одинаковых цифр ее значение не изменяется. Например, интересной будет дробь , дробь интересной не является. Вывести на экран все интересные дроби, знаменатель которых не превосходит 500. (Pascal ABC)
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Кирксова Катя.
Var i, j, lensi, lensj, k, z, ni, nj, p: integer; // i - числитель числа, j - знаменатель числа, k, z - счетчики циклов; lensi - длина числителя (двухзначный или трехзначный); lensj - длина знаменателя (двухзначный или трехзначный); ni и nj - числитель и знаменатели нового числа (например, было 48/98. вычеркнули 8 и 8, получилось 4/9, где ni = 4, а nj = 9); p - индекс массива
newd, rez: real; // rez - здесь хранится результат деления числителя на знаменатель; newd - здесь хранится результат деления числителя на знаменатель при условии, что вычеркнуты цифры в rez
A, B, si, sj, nis, njs: string; // A, B, si, sj - временные переменные для хранения числителя и знаменателя в формате строк; nis, njs - переменные для хранения НОВОГО числителя и знаменателя в формате строк; W - просто строка, выводящая результат
W: array[1..10000] of string; // массив, сравнивающий строки для вывода уникальных
begin
p := 2;
for i := 10 to 500 do // начало цикла, перебирающего все числа до числа 500/500
for j := 10 to 500 do begin
rez := i / j; // здесь хранится значение деления, грубо говоря тут 49/98 (по примеру)
si := IntToStr( i ); // конвертируем числитель в строковый формат, чтобы было удобнее работать с отдельными его цифрами
sj := IntToStr( j ); // аналогично, только со знаменателем
lensi := length( si ); // узнаем длину числителя (может быть 2 или 3 - в зависимости от количества разрядов)
lensj := length( sj ); // аналогично, только со знаменателем
A := si; // создаем временные переменные, чтобы "вырезать" цифры
B := sj;

for k := 1 to lensi do // цикл сравнивания текущей цифры числителя с текущей цифрой знаменателя
for z := 1 to lensj do
begin
nis := si;
njs := sj;
if ( A[ k ] = B[ z ] ) then begin // если цифра в числителе равна цифре в знаменателе
Delete( nis, k, 1 ); // то она вычеркивается в числителе
Delete( njs, z, 1 ); // и вычеркивается в знаменателе
ni := StrToInt( nis ); // новое число уже БЕЗ одинаковых цифр цифр
nj := StrToInt( njs );
newd := ni / nj; // результат деления нового числа, грубо говоря тут 4/8 (по примеру)
if ( newd = rez ) then begin // если результат деления числа равен результату деления нового числа (которые без одинаковых цифр), то выводим интересную дробь
W[p] := IntToStr(i) + '/' + IntToStr(j) + ' = ' + IntToStr(ni) + '/' + IntToStr(nj);
if ( W[p] <> W[p - 1] ) then begin writeln(W[p]);
inc(p);
end;
end;
end;
end;
end;
end.
0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Для решения этой задачи можно использовать язык программирования Pascal. Вот пример решения:

``` program InterestingFractions;

var numerator, denominator, i, j, removedDigit: integer; fractionValue: real;

begin for denominator := 1 to 500 do begin for numerator := 1 to denominator - 1 do begin fractionValue := numerator / denominator; for i := 0 to 9 do begin for j := 0 to 9 do begin if (numerator mod 10 = i) and (denominator mod 10 = j) then begin removedDigit := numerator mod 10; numerator := numerator div 10; denominator := denominator div 10;

if (numerator / denominator = fractionValue) and (numerator mod 10 = removedDigit) then writeln(numerator, '/', denominator);

denominator := denominator * 10 + j; numerator := numerator * 10 + i; end; end; end; end; end; end. ```

В этом решении мы используем вложенные циклы для перебора всех возможных числителей и знаменателей с ограничением до 500. Затем мы проверяем каждую комбинацию чисел на интересность. Если при удалении одинаковой цифры из числителя и знаменателя и делении числителя на знаменатель значение дроби остается неизменным, то эта дробь считается интересной и выводится на экран.

0 0

Похожие вопросы

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

Последние заданные вопросы в категории Информатика

Задать вопрос