Ввод и вывод массива
Ввод и вывод массива, то есть заполнение массива пользователем программы и выдачу содержимого массива пользователю, можно делать по-разному. Рассмотрим далее два варианта ввода/вывода массива в консольном приложении — scanf/printf и cin/cout.
Ввод/вывод массива с помощью функций scanf и prntif
Функция scanf предназначается для ввода данных с клавиатуры.
Для применения данной функции следует сначала подключить библиотеку языка C для операций ввода и вывода. Выглядит это следующим образом:
Как записать числа в массив c
Массив представляет набор однотипных данных. Формальное определение массива выглядит следующим образом:
тип_переменной название_массива [длина_массива]
После типа переменной идет название массива, а затем в квадратных скобках его размер. Например, определим массив из 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
Здесь в цикле сначала вводятся шесть чисел для каждого элемента массива, затем выводим этот массив.
Как записать результат функции(простые числа) в массив?
Всем привет, подскажите пожалуйста как записать числа в массив, я сделал функцию которая возвращает простые числа, теперь мне нужно записать эти числа в массив. Правильно ли я поступил заключив выполнение цикла в функцию или нужно делать как-то по другому?
Только начинаю разбираться в php
Вот что у меня получилось:
echo "$c "; > > name1(); $myarr = array(); $myarr[] = name1(); print_r($myarr);
никак не могу разобраться как в массив передать эти числа
- Вопрос задан более года назад
- 163 просмотра
Комментировать
Решения вопроса 1
Сергей Соколов @sergiks Куратор тега PHP
Надо ясно представлять себе, что на входе, что на выходе.
У каждого «атома» кода, и более крупных штуковин типа функции.
Наверное, стоит разобраться, что возвращает ваша функция. Пока — ничего, т.к. там нет return . Она только печатает значения.
Давайте по шагам. Вот мы в переменную добавим что-то из функции:
function func_a() < return 5; >$result = func_a(); $result === 5; // true
Функция может вернуть и массив:
function func_b() < return [1, 2, 3, 4, 5]; >$result_array = func_b();
В вашей задаче, наверное, лучше формировать массив прямо внутри функции, и возвращать готовенький.
spoiler
/** * Collect array of prime numbers up to provided top limit * @param int $top limit * @return array */ function primes(int $top = 100):array < if ($top array_push($result, $i); > return $result; > primes(55) // [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53]
Алгоритм набора простых чисел можно улучшать и улучшать. Погуглите, что человечество уже напридумывало. Как минимум, чётные числа после 2 можно смело пропускать; проверять не до верхнего предела, а только до его половины. Подробнее (на англ.).
Статические массивы в языке Си
При решении задач с большим количеством данных одинакового типа использование переменных с различными именами, не упорядоченных по адресам памяти, затрудняет программирование. В подобных случаях в языке Си используют объекты, называемые массивами.
Массив — это непрерывный участок памяти, содержащий последовательность объектов одинакового типа, обозначаемый одним именем.
Массив характеризуется следующими основными понятиями:
Элемент массива (значение элемента массива) – значение, хранящееся в определенной ячейке памяти, расположенной в пределах массива, а также адрес этой ячейки памяти. Каждый элемент массива характеризуется тремя величинами:
- адресом элемента — адресом начальной ячейки памяти, в которой расположен этот элемент;
- индексом элемента (порядковым номером элемента в массиве);
- значением элемента.
Адрес массива – адрес начального элемента массива.
Имя массива – идентификатор, используемый для обращения к элементам массива.
Размер массива – количество элементов массива
Размер элемента – количество байт, занимаемых одним элементом массива.
Графически расположение массива в памяти компьютера можно представить в виде непрерывной ленты адресов.