М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
пупс110
пупс110
18.05.2023 20:00 •  Информатика

Язык: c++ реализовать программу с форматированным определенным образом выводом. допустим, выводим результат деления a на b: входные данные: 3 2 вывод: 1.5 входные данные: 8 9 вывод: \frac{8}{9} по сути: если получившееся число можно представить в виде десятичной дроби без периода, то выводим в виде десятичной. если нет (например, 8/9=8,8(8)) - в виде обыкновенной.

👇
Ответ:
ninalolka
ninalolka
18.05.2023

Привожу 2 варианта решения.

Вариант 1: файл 1.cpp

Решение основано на обыкновенном вычислении периода дроби (для дробей, имеющих конечную десятичную запись(например, 1/2=0,5), период вычисляется для формы с нулем в периоде(то есть для 1/2 берется форма 0,5(0))) с деления столбиком.

Замечание: сам алгоритм деления в столбик я писал достаточно давно, и для других программ, поэтому его реализация в данном коде может быть неоптимальной (в плане памяти или кол-ва операций), однако он работает.

Вариант 2: файл 3.cpp

Если немного углубиться в математику, можно найти теорему, по которой дробь, представленная в виде m/n , где НОД(m, n) = 1, имеет конечную десятичную запись тогда и только тогда, когда ее знаменатель n = 5^{a_1}*2^{a_2}; a_1, a_2\in Z, a_1, a_2\geq0. Тогда достаточно сократить числитель и знаменатель на общие множители, а далее выполнить проверку знаменателя.

4,6(44 оценок)
Открыть все ответы
Ответ:
// PascalABC.NET 3.0, сборка 1073
const
  m=5;
  n=4;
  a:array[1..m] of real=(2,-7.1,3.2,-5.4,6.9);
  b:array[1..n] of real=(8.1,3.2,-6.4,-3.5);
  k=3;
var
  i,j:integer;
  sk:real;
  s:array[1..m,1..n] of real;
begin
  Writeln('Массив S');
  for i:=1 to m do begin
    for j:=1 to n do begin
      s[i,j]:=a[i]*b[j];
      Write(s[i,j]:7:2)
    end;
    Writeln
  end;
  sk:=0;
  for i:=1 to m do sk:=sk+s[i,k];
  Writeln('Сумма элементов столбца ',k,' равна ',sk)
end.

Результат выполнения программы:
Массив S
  16.20   6.40 -12.80  -7.00
 -57.51 -22.72  45.44  24.85
  25.92  10.24 -20.48 -11.20
 -43.74 -17.28  34.56  18.90
  55.89  22.08 -44.16 -24.15
Сумма элементов столбца 3 равна 2.56
4,5(72 оценок)
Ответ:
prisheplub
prisheplub
18.05.2023
Давай попробуем рассуждать логически.
Если бы сад состоял из двух деревьев, то было бы два варианта садов: 100+99 и 100+101. Если бы досадили третье дерево, то каждый из предыдущих садов удвоил бы число вариантов: первый 100+99+98 и 100+99+100, и так же второй 100+101+100 и 100+101+102. Подмечаем закономерность: каждое добавляемое дерево удваивает количество вариантов. А сад из одного дерева имеет лишь один вариант.

Поэтому ответ: 1 * 2 * 2 * 2 * ... (десять двоек умножаются) = 2^10 = 1024 варианта садов. 

Думаю что так, если не напутал. Но ты лучше проверь за мной. 
4,4(78 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ