Как присвоить всем элементам массива одно значение
Перейти к содержимому

Как присвоить всем элементам массива одно значение

  • автор:

Arduino.ru

как присвоить одинаковые значения элементам массива

  • Войдите на сайт для отправки комментариев

12 ответов [Последнее сообщение]
Ср, 22/02/2017 — 19:25
Зарегистрирован: 29.02.2016

как присвоить одинаковые начальные значения элементам массива.

пробую так int array[10]=;

в итоге присваивается 1 только первому элементу.

int array[10]=; -это как утомительно, особенно для многомерных массивов.

У меня есть еще вариант: в setup вставить цикл

Уважаемые программисты.подскажите «зеленому»!

  • Войдите на сайт для отправки комментариев

Ср, 22/02/2017 — 21:07

uni аватар

Зарегистрирован: 24.09.2015

Чего-нибудь стандартного для общего случая нет (есть gnu расширение как раз для этого случая, но оно не работает для C++). Бывают костыли, но второй вариант проще всего.

  • Войдите на сайт для отправки комментариев

Ср, 22/02/2017 — 21:39
Зарегистрирован: 22.12.2016

Но если новичёк, то крутите циклы и не морочьте голову, я и сам предпочёл бы цикл

  • Войдите на сайт для отправки комментариев

Ср, 22/02/2017 — 21:57

uni аватар

Зарегистрирован: 24.09.2015

memset ограничен байтовыми значениями.

  • Войдите на сайт для отправки комментариев

Чт, 23/02/2017 — 00:40

andriano аватар

Зарегистрирован: 20.06.2015

А в чем проблема?

Чтобы присвоить элементам массива значения цикл необходим. Что бы у Вас ни было написано в коде (считаем, что в языке устраивающая Вас конструкция есть), процессору все равно придется крутить цикл.

Так что сэкономить не получится. От слова совсем. (нет, 10 байт, конечно, можно присвоить и десятью строками без цикла)

А если Вас вариант цикла не устраивает чисто эстетически, придумайте для него #define как только душеньке угодно.

  • Войдите на сайт для отправки комментариев

Присвоить значение элементу массива

Только начал изучать С++, возникла сложность. Необходимо присвоить определенному элементу массива значение. Делаю так:

for (int i = 0; i < 256; i++) < if (&inp_str[i] == "=" && &inp_str[i + 1] == "=") < out_str[start_out] = " mt24 mb12">
    c++
)" data-controller="se-share-sheet" data-se-share-sheet-title="Поделиться ссылкой на вопрос" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="question" data-se-share-sheet-social="facebook twitter " data-se-share-sheet-location="1" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Поделиться
)" title="">Улучшить вопрос
задан 16 июн 2013 в 18:23
3
    1
    &inp_str[i] а зачем тут оператор взятия адреса?
    – Чад
    16 июн 2013 в 18:38
    Если без него то в строке "if (inp_str[i] == "=" && inp_str[i + 1] == "=")
    – rareMax
    16 июн 2013 в 18:41
    Спасибо большое всем за помощь!
    – rareMax
    16 июн 2013 в 18:43
Добавить комментарий|

2 ответа 2

Сброс на вариант по умолчанию
5

ну если я правильно понял то массивы у тебя char?

Если да то вот пару ошибок у вас.

Во-первых вы сверяете 1 символ из массива со строкой!
В С++ в двойных кавычках это строка! К ней добавляется завершающий нуль символ.
То есть вы сверяете символ из массива с 2 символами из строки "=".
В С++ символ должен быть в одинарных кавычках '='.
А то у вас получается что вы сверяете к примеру символ '=' с 2 символами '=' и '\0'.

Во-вторых вы берёте не символ из массива, а пытаетесь получить адрес адрес ячейки массива в которой хранится символ и сверить со строкой.
Символ & в С++ означает взятие адреса.

Ваш код должен выглядеть примерно так.

for (int i = 0; i < 256; i++) < if (inp_str[i] == '=' && inp_str[i + 1] == '=') < out_str[start_out] = '='; start_out++; >>

У вас в сообщении ошибки так и написано, что компилятор не может с конвертировать символ из массива в 2 символа из строки "=" , чтобы потом сверить их.

Документация

Присваивать значения объектам на Java ® объектный массив, используйте MATLAB ® синтаксис команд. Например, следующий оператор присваивает значение массиву Java A из типа java.lang.Double .

A(row,column) = java.lang.Double(value)

В программе Java вы присвоили бы значение A[row-1][column-1] . Для получения дополнительной информации о различиях между Java и массивами MATLAB, смотрите, Как MATLAB Представляет Массивы Java.

Чтобы запустить примеры в этой теме, создайте 4 5 массив dblArray . Значения отображены для dblArray зависьте от порядка, в котором вы запускаете примеры.

dblArray = javaArray('java.lang.Double',4,5); for m = 1:4 for n = 1:5 dblArray(m,n) = java.lang.Double((m*10)+n); end end dblArray
dblArray = java.lang.Double[][]: [11] [12] [13] [14] [15] [21] [22] [23] [24] [25] [31] [32] [33] [34] [35] [41] [42] [43] [44] [45]

Единственное присвоение индексации индекса

Можно использовать индексацию одно индекса, чтобы присвоить значения массиву. Например, создайте массив Java 5 на 1 и присвойте его строке dblArray .

onedimArray = javaArray('java.lang.Double',5); for k = 1:5 onedimArray(k) = java.lang.Double(100*k); end

Замените строку 3 на значения onedimArray .

dblArray(3) = onedimArray
dblArray = java.lang.Double[][]: [ 11] [ 12] [ 13] [ 14] [ 15] [ 21] [ 22] [ 23] [ 24] [ 25] [100] [200] [300] [400] [500] [ 41] [ 42] [ 43] [ 44] [ 45]

Присвоение линейной матрицы

Чтобы присвоить значение каждому элементу многомерного массива Java, используйте оператор двоеточия MATLAB ( : ). Например, инициализируйте содержимое dblArray обнулять.

dblArray(:) = java.lang.Double(0)
dblArray = java.lang.Double[][]: [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0] [0]

Используйте оператор двоеточия, как вы были бы при работе с массивами MATLAB. Например, присвойте одно значение каждой строке в dblArray .

dblArray(1,:) = java.lang.Double(125); dblArray(2,:) = java.lang.Double(250); dblArray(3,:) = java.lang.Double(375); dblArray(4,:) = java.lang.Double(500)
dblArray = java.lang.Double[][]: [125] [125] [125] [125] [125] [250] [250] [250] [250] [250] [375] [375] [375] [375] [375] [500] [500] [500] [500] [500]

Пустое матричное присвоение

Можно присвоить пустую матрицу ( [] ) к элементу массива Java. MATLAB хранит null значение, а не массив 0 на 0.

dblArray(2,2) = []
dblArray = java.lang.Double[][]: [125] [125] [125] [125] [125] [250] [] [250] [250] [250] [375] [375] [375] [375] [375] [500] [500] [500] [500] [500]

Преобразованное в нижний индекс удаление

Если вы присваиваете пустую матрицу целой строке или столбцу массива MATLAB, то MATLAB удаляет ту строку или столбец от массива. Когда вы присваиваете пустую матрицу массиву Java, массив обеспечивает свои размерности.

Например, создайте массив MATLAB.

for m = 1:4 for n = 1:5 matlabArr(m,n) = (m*10) + n; end end matlabArr
matlabArr = 11 12 13 14 15 21 22 23 24 25 31 32 33 34 35 41 42 43 44 45

Присвойте пустую матрицу четвертому столбцу. Этот оператор изменяет свои размерности от 4 5 до 4 на 4.

matlabArr(:,4) = []
matlabArr = 11 12 13 15 21 22 23 25 31 32 33 35 41 42 43 45

Когда вы присваиваете пустую матрицу массиву Java dblArray , массив обеспечивает 4 5 размерности.

dblArray(:,4) = []
dblArray = java.lang.Double[][]: [125] [125] [125] [] [125] [250] [] [250] [] [250] [375] [375] [375] [] [375] [500] [500] [500] [] [500]

Документация MATLAB

Поддержка

  • MATLAB Answers
  • Помощь в установке
  • Отчеты об ошибках
  • Требования к продукту
  • Загрузка программного обеспечения

© 1994-2021 The MathWorks, Inc.

  • Условия использования
  • Патенты
  • Торговые марки
  • Список благодарностей

Для просмотра документации необходимо авторизоваться на сайте
Войти
Памятка переводчика

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.

Как присвоить всем элементам массива одно значение

Массив представляет набор однотипных данных. Формальное определение массива выглядит следующим образом:

тип_переменной название_массива [длина_массива]

После типа переменной идет название массива, а затем в квадратных скобках его размер. Например, определим массив из 4 чисел:

int numbers[4];

Число элементов массива также можно определять через константу:

const int n = 4; int numbers[n]; // содержит 4 элемента

Некоторые компиляторы (например, G++) также поддерживают установку размера с помощью переменных.

Данный массив имеет четыре числа, но все эти числа имеют неопределенное значение. Чтобы установить значения элементов массива, указываются фигурные скобки (инициализатор), внутри которых перечисляются значения для элементов массива:

int numbers[4] <>; //

В данном случае фигурные скобки пусты, поэтому все элементы массива получают нулевые значения.

Также мы можем указать конкретные значения для всех элементов массива:

int numbers[4] ;

В данном случае в памяти выделяется некоторая область из четырех ячеек по 4 байта (размер типа int), где каждая ячейка содержит определенный элемент массива:

Если значений в инициализаторе меньше, чем элементов в массиве, то значения передаются первым элементам, а остальные получают нулевые значения:

int numbers[4] ; //

Если значений в инициализаторе больше, чем элементов в массиве, то при компиляции возникнет ошибка:

int numbers[4] ; // ! Ошибка

Здесь массив имеет размер 4, однако ему передается 6 значений.

Если размер массива не указан явно, то он выводится из количества переданных значений:

int numbers[] ;

В данном случае в массиве есть 6 элементов.

При этом не допускается присвоение одному массиву другого массива:

int nums1[] ; int nums2[] = nums1; // ошибка

Индексы. Получение и изменение элементов массива

После определения массива мы можем обратиться к его отдельным элементам по индексу. Индексы начинаются с нуля, поэтому для обращения к первому элементу необходимо использовать индекс 0. Обратившись к элементу по индексу, мы можем получить его значение, либо изменить его. Например, получим второй элемент (индекс 1):

int n = numbers[1];

Изменение значения второго элемента:

numbers[1] = 123;

Например, получим и изменим значения элементов:

#include int main() < int numbers[4]; int first = numbers[0]; // получаем первый элемент std::cout 

При обращении по индексу следует учитывать, что мы не можем обратиться по несуществующему индексу. Так, если в массиве 4 элемента, то мы можем использовать индексы с 0 до 3 для обращения к его элементам. Использование любого другого индекса приведет к ошибке:

int numbers[4]; int forth = numbers[4]; // !Ошибка - в массиве только 4 элемента

Константные массивы

Если необходимо, чтобы нельзя было изменять значения элементов массива, то такой массив можно определить как константный с помощью ключевого слова const

const int numbers[4]; // numbers[1] = 23; // ошибка - значения элементов массива изменить нельзя

Длина массива

Длина массива не всегда бывает известна. Однако может потребоваться получить ее. Для этого можно использовать несколько способов. Первый способ, который пришел из языка С, представляет применение оператора sizeof :

#include int main() < int numbers[]; std::cout 

По сути длина массива равна совокупной длине его элементов. Все элементы представляют один и тот же тип и занимают один и тот же размер в памяти. Поэтому с помощью выражения sizeof(numbers) находим длину всего массива в байтах, а с помощью выражения sizeof(numbers[0]) - длину одного элемента в байтах. Разделив два значения, можно получить количество элементов в массиве.

Второй способ представляет применение встроенной библиотечной функции std::size() :

#include int main() < int numbers[]; int count = std::size(numbers); std::cout 

Перебор массивов

Используя циклы, можно пробежаться по всему массиву и через индексы обратиться к его элементам:

#include int main() < const int n = 4; int numbers[n] ; for(int i=0; i < n; i++) < std::cout >

Чтобы пройтись по массиву в цикле, надо знать его длину. Здесь длина задана константой n.вначале надо найти длину массива. И в цикле for перебираем все элементы, пока счетчик i не станет равным длине массива. В итоге на консоль будут выведены все элементы массива:

11 12 13 14

Другой пример - вычислим сумму элементов массива:

#include int main() < int numbers[]; int sum <>; for (int i <>; i < std::size(numbers); sum += numbers[i++]); std::cout 

Здесь длина массива вычисляется динамически - с помощью функции std::size() .

Перебор элементов в стиле for-each

Используем другую форму цикла for , которая предназначена специально для перебора последовательностей, в том числе для массивов

#include int main() < int numbers[4] ; for(int n : numbers) < std::cout >

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

Если нам неизвестен тип объектов в массиве, то мы можем использовать спецификатор auto для определения типа:

for(auto n : numbers)

Ввод значений массива с консоли

Подобно тому, как вводятся данные для отдельных переменных, можно вводить значения для отдельных элементов массива. Например, пусть пользователь вводит значения числового массива:

#include int main() < const int max ; // максимальная длина массива - не больше 6 чисел int numbers[max]; // массив для ввода чисел int i<>; // счетчик введенных чисел std::cout > numbers[i]; // вводим число i++; > // выводим массив for (i =0; i < max; ++i) < std::cout std::cout

Здесь в цикле сначала вводятся шесть чисел для каждого элемента массива, затем выводим этот массив.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *