lezginocka11
24.06.2022 02:56

Составьте блок-схему алгоритма для решения следующей задачи. Найти длину окружности. Радиус окружности задать самостоятельно

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
emmadetes
04.03.2020 18:21

Код в приложении.

Пояснения:

Посмотрим, как же нам решить задачу. Сначала, поймём как обнулить бит. Бит можно обнулить если использовать логическое И с нулём. Значит, нам нужно использовать логическое И на нужном бите. Как же это сделать? В С++ есть побитовые операции между двумя числами, но побитовое И (&) применяется между всеми битами двух чисел, т.е.

101\ \& \ 110 = (1 \&1)(0\& 1)(1 \& 0) = 100

Заметим, что

a \& 0 = 0\\a \& 1 = a

Числа в С++ с фиксированной разрядностью, т.е. битов всегда определённое кол-во. Исходя из условий задачи, тут нужен int - 32-битный тип.

Тогда, чтобы обнулить нужный бит, нам нужно использовать побитовое И с таким числом, что все его биты, кроме нужного, равны 1.

Добиться этого мы сможем следующим образом. Сдвинем 1 влево на k бит и получим такое число, что все биты, кроме k-го равны 0, а k-ый равен 1, и используем побитовую инверсию (~), т.е. инвертируем каждый бит в числе.

Получив нужное число, выполняем побитовое И и обнуляем k-ый бит.

Как работают примеры:

n = 21 = 10101, \ k = 1\\n \& \sim(1

И второй пример:

n = 21 = 10101, \ k = 2\\n \& \sim (1


Условие Даны два числа N и K. Требуется изменить число N так, чтобы в K-м бите этого числа в двоично
0,0(0 оценок)
Ответ:
gsergey1
03.01.2021 22:25
DIM ch$(26)
FOR i = 1 TO 26
ch$(i) = CHR$(ASC("a") + i - 1)
NEXT

DIM cw(26) AS LONG

PRINT "text:"
INPUT "", s$
DO WHILE s$ <> "*"
s$ = s$ + " "
iw = 0
FOR i = 1 TO LEN(s$)
c$ = MID$(s$, i, 1)
IF iw = 0 AND c$ <> " " THEN
iw = 1
idx = ASC(c$) - ASC("a") + 1
cw(idx) = cw(idx) + 1
ELSEIF iw = 1 AND c$ = " " THEN
iw = 0
END IF
NEXT
INPUT "", s$
LOOP

FOR i = 1 TO 25
m = i
FOR j = i TO 26
IF cw(j) > cw(m) OR (cw(j) = cw(m) AND ch$(j) < ch$(m)) THEN
m = j
END IF
NEXT
IF m <> i THEN
tmp = cw(m)
cw(m) = cw(i)
cw(i) = tmp
tmp$ = ch$(m)
ch$(m) = ch$(i)
ch$(i) = tmp$
END IF
NEXT

FOR i = 1 TO 26
IF cw(i) <> 0 THEN
PRINT ch$(i) + ":"; cw(i)
END IF
NEXT
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота