Заполнение массива нулями
return 0;
>
Подскажите в чем ошибка кода?
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Вопрос: заполнение нулями пропусков в файле
Из задания: Вопрос: как реализовать заполнение нулями пропусков между позициями? первое.
Заполнение массива нулями
Здравствуйте, задача такая: в двумерном массиве заполнить нулями те столбцы и те строки, которые.
Заполнение массива нулями и единицами
Задача: заполнить массив нулями и единицами. Y-строка B-номер символа в строке Y=2^N Я написал.

Заполнение массива нулями и единицами в шахматном порядке
3. Составьте программу заполнения массива А нулями и единицами в шахматном порядке. Пожалуйста.
567 / 198 / 70
Регистрация: 25.05.2012
Сообщений: 816

Сообщение было отмечено canstant как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#define n 8 int a[n][n]; int i,j; int main() { for(i=0;in;i++) for(j=0;jn;j++) { a[i][j] =0; printf ("%d",a[i][j]); } return 0; }
0000000000000000000000000000000000000000000000000000000000000000
Заполнение 0-ми проще и, на мой взгляд, правильнее — это использовать функцию memset:
1 2 3 4 5 6 7 8 9
#include // . int main() { int a[8][8]; memset(a, 0, sizeof(a)); // . return 0; }
| Меню пользователя @ anmartex |
| Посетить домашнюю страницу anmartex |
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Заполнение нулями столбцов и строк массива, содержащих значение 0
Дан массив. Нужно реализовать функцию, которая заполнит нулями всю строку и столбец, в котором.
Заполнение нулями элементов массива A(m,n) по периметру, используя 1 цикл
Ребят, только начинаю вникать в суть программирования. Взял себе дополнительные задания, не хватает.
Заполнение пропусков нулями в файле
Есть текстовый файл. Данные в нем записаны так: 10 23 1 45 3 46 2 10 7 11.
Заполнение правой части StringGrid-а нулями
Для элемента stringgrid заполнить правую часть нулями, причем длина строки такой последовательности.
Заполнение последней строки StringGrid нулями.
Дана таблица StringGrid (Delphi). Количество строк неизвестно. Как заполнить последнюю строку.
Конструктор копирования матриц, и заполнение лишнего нулями
Здравствуйте. Нужно создать конструктор, который копировал бы одну матрицу в другую. При нехватке.
c++: инициализация небольших массивов и заполнение их нулями
а с чем это связано? интересно как это на уровне инструкций выглядит и там и там сам массив скорее всего сидит в стеке, во втором случае вызывается функция для заполнения его нулями, а вот что происходит в первом случае? правильно ли я понимаю, что при использовании оба случая идентичны относительно результата (т.е. все 10 ячеек всегда изначально заполнены 0)?
Отслеживать
задан 13 янв 2021 в 8:25
37.1k 4 4 золотых знака 26 26 серебряных знаков 69 69 бронзовых знаков
А где здесь C++? Где std::array? Вижу только сишный массив.
13 янв 2021 в 8:28
Статья на хабре на эту тему.
13 янв 2021 в 8:32
Заявления в духе «эта конструкция работает быстрее, чем эта» следует подкреплять, добавив минимальный воспроизводимый пример.
13 янв 2021 в 8:43
@Никита Самоуков, а разве это не C++, вот если бы вы написали а где здесь STL? Где std::array? я бы понял, но метки stl у меня и не стоит 😉
13 янв 2021 в 8:47
Нормальный вопрос и для с++. Просто некоторые люди очень хотят, что бы сделать с++ не похожим на си и пойти дальше, использовать все-все фичи новейших стандартов.
13 янв 2021 в 8:50
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
интересно как это на уровне инструкций выглядит
это всегда легко узнать — https://gcc.godbolt.org/ покажет все.
Внутри интересно. я заметил, что студия на уровне /O0 /O1 не выбрасывает memset. Какой бы не был он быстрый внутри, это вызов функции. А вот первый способ превращается где то в такое
xor eax, eax mov ecx, 400 ; 00000190H rep stosb
то есть, мы процессору говорим, в регистре ecx — количество, в eax — данные, рядом там есть ещё начало массива. И вперед.
А в одно время ребята с Интела посмотрели на это сказали — а давайте это будет распознаваться процессором как некая макрокоманда (и копирование памяти через префикс rep) и будет исполнятся прям внутри, а то и контроллером памяти. И это реально быстро. Детали можно найти в этом документе https://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-optimization-manual.pdf
gcc и clang для маленьких массивов просто берет и копирует регистр eax (куда предварительно записал ноль) в память без цикла — это тоже не медленно (память то в кеше).
А вот для больших массивов даже в первом случае clang вызывает memset.
Также интересно то, что gcc умеет распознавать memset как встроенную «магическую функцию» (то есть, он знает, что она делает) и заменять ее на «правильный» код.
Поэтому делаем выводы:
- компиляторы хитры и знают много особенностей процессоров
- если компилятор не понимает, что от него хотят — сделает общий код, что бы оно работало
- минимальные изменения кода (размера массива) или версий компилятора могут приводить к большим перестроениям ассемблерных инструкций
Arduino.ru
как заполнить сразу массив нулями при инициализации?
- Войдите на сайт для отправки комментариев
19 ответов [Последнее сообщение]
Сб, 30/06/2018 — 21:31
Зарегистрирован: 10.04.2017
int arr [100] = <>; так ведь не работает?
- Войдите на сайт для отправки комментариев
Сб, 30/06/2018 — 21:33
Зарегистрирован: 26.05.2017
SadiQ228 пишет:
int arr [100] = <>; так ведь не работает?
а зачем это вообще нужно?
По стандарту языка Си числовые типы инициализируются нулями автоматически.
- Войдите на сайт для отправки комментариев
Сб, 30/06/2018 — 21:45
Зарегистрирован: 10.04.2017
и такие тоже? uint8_t
- Войдите на сайт для отправки комментариев
Сб, 30/06/2018 — 22:02
Зарегистрирован: 10.04.2017
чтоб не плодить темы спрошу сразу.
а как присваивать несколько значений массивву? делаю так но не работает
как сделать похитрее?
- Войдите на сайт для отправки комментариев
Сб, 30/06/2018 — 22:05
Зарегистрирован: 09.06.2016
- Войдите на сайт для отправки комментариев
Сб, 30/06/2018 — 22:10
Зарегистрирован: 10.04.2017
это каждый раз будет создаваться массив, а хотелось бы использовать один и тот же
- Войдите на сайт для отправки комментариев
Сб, 30/06/2018 — 22:14
Зарегистрирован: 09.06.2016
- Войдите на сайт для отправки комментариев
Сб, 30/06/2018 — 22:39
Зарегистрирован: 09.06.2016
SadiQ228 пишет:
чтоб не плодить темы спрошу сразу.
а как присваивать несколько значений массивву? делаю так но не работает
как сделать похитрее?
присваивать значения массиву можно только при создании.
придется tmp[0]=0x00; tmp[1]=0xA4; tmp[2]=0x04; tmp[3]=0x00;
- Войдите на сайт для отправки комментариев
Вс, 01/07/2018 — 10:17
Зарегистрирован: 25.02.2016
SadiQ228 пишет:
как сделать похитрее?
написать функцию присваивания, если Вам лень каждый раз индексы писать.
- Войдите на сайт для отправки комментариев
Вс, 01/07/2018 — 11:38

Зарегистрирован: 08.04.2011
reticular пишет:
SadiQ228 пишет:
присваивать значения массиву можно только при создании.
придется tmp[0]=0x00; tmp[1]=0xA4; tmp[2]=0x04; tmp[3]=0x00;
Никогда бы не догадался что оператор присваивания умеет работать только один раз. 🙂
- Войдите на сайт для отправки комментариев
Вс, 01/07/2018 — 11:50
Зарегистрирован: 05.08.2014
SadiQ228 пишет:
это каждый раз будет создаваться массив, а хотелось бы использовать один и тот же
Судя по примеру достаточно менять tmp[0]. А так, в общем случае, поможет memcpy.
- Войдите на сайт для отправки комментариев
Вс, 01/07/2018 — 17:18
Зарегистрирован: 24.09.2015
Да вот тоже интересно как заполнить массив данными .. Интересно, в плане допиливания тестовой проги под ATmega2560: надо объявить массив в PROGMEM для заливки скетча до упора флеш, которой там 256килов. Сам тест умещается в пару килобайт, а надо убедится что шьются все 256кб (уже имел опыт битого флеш) .. как-то руками приписывать лениво. 🙂
- Войдите на сайт для отправки комментариев
Вс, 01/07/2018 — 21:30

Зарегистрирован: 20.06.2015
Arhat109-2 , не совсем понял, что Вам нужно.
Если просто сформировать массив, который нужно залить во флешь, то проще всего написать маленькую программу (для ПК) которая сформирует исходник или его фрагмент в текстовом файле.
- Войдите на сайт для отправки комментариев
Пнд, 02/07/2018 — 00:03
Зарегистрирован: 05.08.2014
Проще всего сгенерить длинную последовательност, как ПСЧ генерят. Пару строк кода в цикле залупят хоть гектар оригинальными данными. Проверить ею же.
- Войдите на сайт для отправки комментариев
Пнд, 02/07/2018 — 08:19

Зарегистрирован: 20.06.2015
Все так, только для проверки нужны не «оригинальные» данные.
- Войдите на сайт для отправки комментариев
Пнд, 02/07/2018 — 10:07
Зарегистрирован: 24.09.2015
Да, всё верно: надо сгенерить заполнение флеша размером на 256 килобайт для заливки и последующего чтения, хотя бы силами avrdude во время заливки. Убедится что ВЕСЬ флеш пишется и читается как надо.
Ну я вот тоже пока не вижу иного способа как привлечь внешние системы для автогенерации «объемного» скетча — «написать программку для чего-либо», которая автосоздаст такой скетч.
Ещё пока мучаюсь с вариантом как проверить периферию в режиме «самотестирования» .. уж больно много ножек у этой меги. На каждую «светодиод» не повесишь.. и если UART порты ещё можно прогнать самотестированием, то вот замкнуть также I2C и SPI не очень понимаю получится ли то что хотелось..
P.S. Тест 512 килобайт памяти оказалось самой простой частью .. 🙂
- Войдите на сайт для отправки комментариев
Пнд, 02/07/2018 — 15:01

Зарегистрирован: 15.03.2016
Arhat109-2 пишет:
Ну я вот тоже пока не вижу иного способа как привлечь внешние системы для автогенерации «объемного» скетча — «написать программку для чего-либо», которая автосоздаст такой скетч.
Снова на арене? Мне не хватает ЧЮ, чтобы отличить — когда ты дурачишься, а когда и правда дурак.
В режиме бутлоадера тебе доступня вся память. Бери первый бутлоадер, в каталоге atmega, он проще, чем оптибут. Добавь туда проверку хоть всей памяти перед загрузкой или вместо загрузки, можешь ошибки в сериал вывести или и2с инициализировать. Там даже вариант для 128 учтен. С учетом размера кода придется корректировать фьюзы. В одном из бутлоадеров в ИДЕ закомментирована «интерактивная» часть. можешь посмотреть на ее примере.
После установки всех тулзов в Линухе, а ты вроде умеешь им пользоваться, бутлоадер просто собирается make ИМЯ_ЦЕЛИ. Только цель свою в мейкфайле создаешь.
Я писать тебе код более не стану — опять соврешь, что у тебя была «другая задача».
более того, ты вроде уже освоился в среде Ардуино? Сможешь добавить в меню своей платы хитрый пункт для самотестирования, при это заливаться будет программа самотестирования(о которой я написал выше) в режиме бутлоадера.
Опять же, после неоднократных проявлений говнистости характера — показывать — «как такое сделать» — не стану. А то опять будет «не та задача».
- Войдите на сайт для отправки комментариев
Инициализация массива нулями с помощью <>
Инициализация членов класса нулями
Необходимо инициализировать члены класса нулями. class ID < public: int GetKey() < return.
Инициализация объекта нулями или мусором
Здравствуйте. Я бы воспользовался поиском, но даже не знаю, как ему сформулировать вопрос. .

Замените все четные значения введённого с клавиатуры массива нулями и вывести скорректированные значения (с помощью указателей)
Дорогие форумчане! Помогите пожалуйста с заданием!:cry: Введите с.
Инициализация с помощью конструктора без параметров. Почему не нужны скобки?
Доброго времени суток форумчане. Такой вопрос , почему в конструкторе без параметров не нужно.