Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2021, 12:00   #1
Roberttt
Пользователь
 
Регистрация: 30.05.2018
Сообщений: 56
По умолчанию Си - Сделал указатель на первый байт массива, сравниваю переменную i, которая равна одному байту, с количеством байтов и обращаюсь к каждому байту в массиве, но это не работает.

Подскажите, пожалуйста, что я делаю неправильно? Сделал указатель на первый байт массива, сравниваю переменную i, которая равна одному байту, с количеством байтов и обращаюсь к каждому байту в массиве, но это не работает.

Задача такая:
Напишите функцию, которая считает количество нулевых байтов в массиве. Будьте внимательны:

Массив может быть любого типа; если он содержит, например, числа размером 4 байта, то в каждом числе нулевых байтов может быть несколько.
Функция должна корректно работать с неизменяемыми массивами любого типа, ведь она не изменяет их содержимое.
На вход функции подается не количество элементов, а размер массива в байтах

Код:
size_t count_zeroes( void const* data, size_t sz ) {
    int8_t NULLbytes = 0;
    int8_t const* bytes = data;
    for (int8_t i = 0; i < sz; i++) {
        if (bytes[i] == 0) {
            NULLbytes += 1;
        }
        else { continue; }
    }
    return NULLbytes;
}

Последний раз редактировалось Roberttt; 12.07.2021 в 13:21.
Roberttt вне форума Ответить с цитированием
Старый 12.07.2021, 12:13   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
size_t count_zeroes(void const* data, size_t sz) {
    size_t NULLbytes = 0;
    int8_t const* bytes = static_cast<int8_t const*>(data);
    for (size_t i = 0; i < sz; i++) {
        NULLbytes += bytes[i] == 0;
    }
    return NULLbytes;
}
Так все-таки си или плюсы? Какой именно язык?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 12.07.2021 в 12:32.
BDA вне форума Ответить с цитированием
Старый 12.07.2021, 13:22   #3
Roberttt
Пользователь
 
Регистрация: 30.05.2018
Сообщений: 56
По умолчанию

Язык Си
Roberttt вне форума Ответить с цитированием
Старый 12.07.2021, 13:34   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Тогда static_cast не нужен.
Код:
size_t count_zeroes(void const* data, size_t sz) {
    size_t NULLbytes = 0;
    int8_t const* bytes = data;
    for (size_t i = 0; i < sz; i++) {
        NULLbytes += bytes[i] == 0;
    }
    return NULLbytes;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 12.07.2021, 13:54   #5
Roberttt
Пользователь
 
Регистрация: 30.05.2018
Сообщений: 56
По умолчанию

Большое спасибо!
Roberttt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler - Описать близкую процедуру F(X, N, P), определяющую, сколько элементов массива X из N байтов равно байту P Nisekoi Помощь студентам 0 25.05.2015 21:13
Ввести в программу переменную, которая не будет равна чему-либо, а так и останется SimonCarptur Помощь студентам 8 05.12.2012 17:54
Как получить указатель на первый байт битового образа? Don Karleone Общие вопросы Delphi 2 05.05.2012 09:12
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) Beren42 Помощь студентам 0 15.12.2010 20:32
Доступ к байту с заданным адресом (чтение) Breaknus Visual C++ 22 05.10.2010 14:33