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

Решить 1 напишите целые числа петеричной системы счиления с 0 до 100 .

Показать ответ
Ответ:
kutinaI
kutinaI
19.06.2022 01:17

#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';

}

0,0(0 оценок)
Ответ:
kurzinovaa
kurzinovaa
05.07.2021 20:58

Так работать оно никак не будет по 2 причинам

for (int i = 0; i < n; i++)

{

int* temp = new int[n];

temp[i] = mat[n - 1][i];

mat[n - 1][i] = mat[i][0];

mat[i][0] = temp[i];

}

1. у тебя mat[n][m], а ты пытаешься че-то там обратиться к mat[n - 1][i], а i бегает по n. Ты не написал че должна делать прога, потому сам приведи индексы в чувство.

2. ты зачем то создаёшь новый масив temp, не очищаешь память, но ладно это, так ты создаёшь его для хранения 1 значения. mat[x][y] в данном случае вернёт просто int, потому и делай int temp = mat[x][y] или если так нужен указатель, то int* temp =&mat[x][y] , а ещё лучше почитай про std::swap (как я понял, это надо чтоб поменять местами значения 2 элементов)

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота