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

C++. кто знает как правильно возвести экспоненту в степень чтобы не было ошибок?

👇
Ответ:
MaxineCaulfield2003
MaxineCaulfield2003
24.03.2023
У стандартной библиотеки плюсов с этим все хорошо. Если тебе нужна сверхточность, то придется использовать длинную арифметику и вычислять экспоненту через ряд Тейлора: e^x=1+x/1! + x^2/2! + ... + x^n/n!; n -\inf либо для компьютерных вычислений гораздо эффективнее так(точность выше) e^x= \frac{1}{1-x/1!+x^2/2!-x^3/3!+...+(-1)^nx^n/n!} этот ряд быстрее сходится
4,7(5 оценок)
Открыть все ответы
Ответ:
1945269
1945269
24.03.2023
Const
  n1 = 20;
  m1 = 20;

var
  a: array[1..n1, 1..m1] of integer;
  b: array[1..m1] of integer;
  i, j, m, n: integer;

begin
  Write('Введите через пробел число строк и столбцов массива: ');
  Readln(n, m);
  Randomize;
  Writeln('Исходный массив');
  for i := 1 to n do
  begin
    for j := 1 to m do
    begin
      a[i, j] := Random(101) - 50;
      Write(a[i, j]:4)
    end;
    Writeln
  end;
  Writeln('Сформированный массив');
  for j := 1 to m do
  begin
    i := 1;
    while (i <= n) and (a[i, j] >= 0) do i := i + 1;
    if i <= n then b[j] := a[i, j] else b[j] := -99;
    Write(b[j]:4)
  end;
  Writeln
end.

Тестовое решение:
Введите через пробел число строк и столбцов массива: 3 10
Исходный массив
 -11 -18 -42 -22  -9   2  21  15  40  -3
   4  -5  40 -13 -44 -37  43  47   1 -39
  20  50  21 -18 -10   6  12 -10  43 -37
Сформированный массив
 -11 -18 -42 -22  -9 -37 -99 -10 -99  -3
4,5(23 оценок)
Ответ:
nourdana
nourdana
24.03.2023
Полный код программы

var
    k, rk, n: longint;

function f(n: longint): longint;
begin
    f := n * n * n;
end;

function calc(k: longint): longint;
var
    i: longint;
begin
    i := 1;
    while f(i) < k do
        i := i + 1;
   
    if f(i) - k <= k - f(i - 1) then
        calc := i
    else calc := i - 1;
end;

begin
    rk := calc(10);
    n := 0;
    for k := 1 to 1000 do
        if calc(k) = rk then
        begin
            writeln('calc(', k, ') = ', calc(k));
            n := n + 1;
        end;
   
    writeln(n);
end.

вывод
calc(5) = 2
calc(6) = 2
calc(7) = 2
calc(8) = 2
calc(9) = 2
calc(10) = 2
calc(11) = 2
calc(12) = 2
calc(13) = 2
calc(14) = 2
calc(15) = 2
calc(16) = 2
calc(17) = 2
13
4,6(83 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ