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

Программа на С++ Не сталкивался и с этим
большая

Создать целочисленный массив типа short int размером n. Элементы массива инициализируются по следующему алгоритму:
1) число А вводится с консоли;
2) используя битовые операции, сделать в нем так, чтобы 11 бит был заменён значением 5-го бита, а остальные сохранили свои значения.
3) присвоить преобразованное число А текшему элементу массива.
Инициализированный массив вывести на печать и найти в нём элементы, у которых старшая четвёрка бит имеет все единицы.

👇
Ответ:
anokhinsema
anokhinsema
04.06.2023

#include <iostream>

short transform(short A)

{

// находим 5й бит А

bool bit = (A >> 4) & 1;

// если 5й бит равен 1, то просто применяем побитовое или на 11й бит А (1 | 1 = 1, 0 | 1 = 1 )

if (bit == 1)

A |= 1 << 10;

// если 0, то применяем побитовое и (1 & 0 = 0, 0 & 0 = 0)

else

// для того чтоб побитовое и не стерло число, его нужно сделать вида 011...11 (0 и 10 единиц)

// сделать это можно сдвинув 1 бит на 10 позиций влево и инвертировав полученый результат

A &= ~(1 << 10);

return A;

}

short test(short A)

{

// можно взять логарифм по основанию 2 от A, но...

// сдвигаем все биты числа к концу, пока старший бит числа не окажется на месте 16го бита

if (A == 0)

return 0;

while (A >> 15 == 0)

A <<= 1;

// проверяем 12й-16й биты если они равны единицам

return ((A >> 12) & 0b1111) == 0b1111;

}

int main(int argc, char *argv[])

{

const size_t n = 1;

short mas[n];

for (short &elm : mas)

{

std::cin >> elm;

elm = transform(elm);

}

for (short &elm : mas)

std::cout << elm << ' ' << test(elm) << '\n';

}

4,8(43 оценок)
Открыть все ответы
Ответ:
89539123898
89539123898
04.06.2023
Во-первых, не whill, а while.
 Во-вторых, цикл с предусловием(while) выполняется только тогда, когда его условие возвращает ложь. Если условие возвращает правду, цикл завершается. Бывает так, что при попытке первой итерации цикла условие уже возвращает правду. В этом случае цикл не будет выполнен ни разу.
 Цикл с предусловием(repeat), наоборот, выполняется, пока условие возвращает правду и завершается ложью. Стоит заметить, что если цикл с предусловием проверяет своё условие перед итерацией, цикл с постусловием делает это после, а это значит, что последний выполнится хотя бы один раз.
4,4(40 оценок)
Ответ:
Mary2304Cat
Mary2304Cat
04.06.2023
uses crt,graph; type mas=array[1..500] of Pointtype; var gd,gm,i,j,k,n:integer;     a:mas; begin randomize; gd:=0; initgraph(gd,gm,''); for i:=1 to 500 do  begin   a[i].x:=random(getmaxX);   a[i].y:=random(getmaxY);   circle(a[i].x,a[i].y,2);  end; k:=0;n:=0; repeat k:=k+1; delay(200); setcolor(0); for i:=1 to 500 do circle(a[i].x,a[i].y,2); for i:=1 to 500 do  begin   if a[i].y>getmaxY-n-10 then a[i].y:=1   else a[i].y:=a[i].y+3;   if a[i].x<0 then a[i].x:=getmaxX   else a[i].x:=a[i].x-1;  end; setcolor(15); for i:=1 to 500 do circle(a[i].x,a[i].y,2); if k mod 20=0 then  begin   n:=n+1;   line(0,getmaxY-n,getmaxX,getmaxY-n);  end; until keypressed; readln end.
4,7(32 оценок)
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ