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

По плану завод должен выпускать 4000 станков в месяц. В первый месяц план был выполнен. Каждый последующий месяц завод выпускал станков в количество 150% от предыдущего месяца. Сколько станков завод выпустил за 6 месяцев? Через сколько месяцев будет выпускаться более Y станков в месяц? ПАСКАЛЬ

Показать ответ
Ответ:
Polinakuzmina32
Polinakuzmina32
13.01.2023 04:28
В "классическом" языке Паскаль, как его описал Н.Вирт, есть только функции для возведения во вторую степень и извлечения квадратного корня.
Поэтому для возведения в любую другую степень используют основное логарифмическое тождество \displaystyle a^b=e^{b\ln(a)}

На паскале это записывается exp(b*ln(a))

В современных реализациях паскаля добавлена функция power(a,b), которая решает проблему.

Итак, "классическая запись"
b:=a*a+c*c; { возможно также sqr(a)+sqr(b) }
q:=exp(b*ln(cos(a+2.53*c)));

И запись современная
b:=a*a+c*c; // возможно также sqr(a)+sqr(b)
q:=power(cos(a+2.53*c),b);
0,0(0 оценок)
Ответ:
Знаток228111
Знаток228111
01.06.2022 09:02
Инвариантные фрагменты кода
Оптимизация инвариантных фрагментов кода тесно связана с проблемой оптимального программирования циклов. Внутри цикла могут встречаться выражения, фрагменты которых никак не зависят от управляющей переменной цикла. Их называют инвариантными фрагментами кода. Современные компиляторы часто определяют наличие таких фрагментов и выполняют их автоматическую оптимизацию. Такое возможно не всегда, и иногда производительность программы зависит целиком от того, как запрограммирован цикл. В качестве примера рассмотрим следующий фрагмент программы (язык Turbo Pascal):
for i := 1 to n do
begin
...
for k := 1 to p do
for m := 1 to q do
begin
a[k, m] := Sqrt(x * k * m - i) + Abs(u * i - x * m + k);
b[k, m] := Sin(x * k * i) + Abs(u * i * m + k);
end;
...
am := 0;
bm := 0;
for k := 1 to p do
for m := 1 to q do
begin
am := am + a[k, m] / c[k];
bm := bm + b[k, m] / c[k];
end;
end;
Здесь инвариантными фрагментами кода являются слагаемое Sin(x * k * i) в первом цикле по переменной m и операция деления на элемент массива c[k] во втором цикле по m. Значения синуса и элемента массива не изменяются в цикле по переменной m, следовательно, в первом случае можно вычислить значение синуса и присвоить его вс переменной, которая будет использоваться в выражении, находящемся внутри цикла. Во втором случае можно выполнить деление после завершения цикла по m. Таким образом, можно существенно сократить количество трудоёмких арифметических операций.
[править] Приоритеты оптимизации
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота