Определите, какое число будет напечатано в результате выполнения следующего алгоритма:
Var a,b,t,M,R:integer;
Function F(x:integer):integer;
begin
F:=-(x+4)*(x+2);
end;
BEGIN
a:=-20; b:=20;
M:=a; R:=F(a);
for t:=a to b do begin
if (F(t)>R)then begin
M:=t;
R:=F(t);
end;
end;
write(M);
END.
Общий расчёт делается через двоичный логарифм (его можно заменить делением двух десятичных или натуральных логарифмов) и потом округление до целого числа с избытком (т.е. округляем всегда вверх) обозначается вот такими палочками с выступами сверху ⌈ ⌉ .
Единственный нюанс в том, что это формула для N значений. А тут спрашивается, сколько разрядов нужно для хранения числа 134.
Я так понимаю, что при этом количество значений N = 134 + 1 = 135 (эта единица- учёт того, что есть ещё и нулевое значение, по крайней мере в такой форме хранения целых числел- в виде двоичного числа).
Ну, либо можно использовать таблицу степеней двойки, и подобрать по ней такую степень, значение которой равно или чуть больше вашего числа. Опять же, здесь N- это количество значений, которые можно хранить в двоичных разрядов (т.е. тут тоже надо считать и нулевое значение). Например:
1 2
2 4
3 8
4 16
5 32
6 64
7 128 <-- это значение ещё не достаточное (меньше, чем 135)
8 256 <-- а вот это значение минимально необходимое (8 разрядов)
9 512
10 1024
11 2048
12 4096
13 8192
14 16384
15 32768
16 65536
#include <stdio.h>
#include <math.h>
#include <locale.h>
main()
{
setlocale(0, "");
int x;
double answer = 0;
printf("Введите значение X: ");
scanf("%d", &x);
if (x >= 0)
{
answer = sqrt(pow(x, 3) + 5);
}
else if (x > -3 && x < 0)
{
answer = 3*pow(x, 4) + 9;
}
printf("ответ: %f", answer);
}
Объяснение:
#include <stdio.h> // Библиотека ввода - вывода
#include <math.h> // Математическая библиотека
#include <locale.h> // Библиотека локализации
main()
{
setlocale(0, ""); // Локализация
int x; // Создание целочисленной переменной x
double answer = 0; // Создание вещественной переменной answer для хранения ответа
printf("Введите значение X: "); // Вывод сообщения в консоль
scanf("%d", &x); // Ввод значения x
if (x >= 0) // Если значение переменной x ≥ 0
{
answer = sqrt(pow(x, 3) + 5); // Вычисляем верхнее выражение
}
else if (x > -3 && x < 0) // Иначе, если значение переменной x > -3 И < 0
{
answer = 3*pow(x, 4) + 9; // Вычисляем нижнее выражение
}
printf("ответ: %f", answer); // Вывод ответа
}