создание, объявление и инициализация и вывод на примерах
В этом уроке мы научимся работать с массивами. Мы научимся объявлять, инициализировать и получать доступ к элементам массива в программировании на C++ с помощью примеров. В С++ массив – это переменная, которая может хранить несколько значений одного типа.
Например: Предположим, в классе 27 учеников, и нам нужно сохранить оценки всех их. Вместо того, чтобы создавать 27 отдельных переменных, мы можем просто создать массив:
double grade[27];
Здесь grade – это массив, который может содержать не более 27 элементов типа double.
В C++ размер и тип массивов не могут быть изменены после его объявления.
Объявление массива
dataType arrayName[arraySize];
Например:
int x[6];
Здесь:
- int – тип сохраняемого элемента;
- x – имя массива;
- 6 – размер массива.

Доступ к элементам в массиве
В C++ каждый элемент массива связан с числом. Число известно, как индекс массива. Мы можем получить доступ к элементам массива, используя эти индексы.
// syntax to access array elements array[index];
Рассмотрим массив x, который мы видели выше.
Несколько вещей, которые следует помнить:
- Индексы массива начинаются с 0. Это означает, что x [0] – это первый элемент, сохраненный с индексом 0.
- Если размер массива равен n, последний элемент сохраняется по индексу (n-1). В этом примере x [5] – последний элемент.
- Элементы массива имеют последовательные адреса. Например, предположим, что начальный адрес x [0] – 2120d. Тогда адрес следующего элемента x [1] будет 2124d, адрес x [2] будет 2128d и так далее. Здесь размер каждого элемента увеличивается на 4. Это потому, что размер int равен 4 байтам.
Инициализация
В С++ можно инициализировать массив во время объявления.
Например:
// declare and initialize and array
int x[6] = {19, 10, 8, 17, 9, 15};Другой способ инициализации массива при объявлении:
// declare and initialize an array
int x[] = {19, 10, 8, 17, 9, 15};Здесь мы не упомянули размер массива. В таких случаях компилятор автоматически вычисляет размер.
Массив с пустыми членами
В C++, если массив имеет размер n, мы можем хранить до n элементов в массиве. Однако что произойдет, если мы сохраним менее n элементов.
Например:
// store only 3 elements in the array
int x[6] = {19, 10, 8};Здесь массив x имеет размер 6. Однако мы инициализировали его всего тремя элементами.
В таких случаях компилятор присваивает оставшимся местам случайные значения. Часто это случайное значение просто 0.
Как вставить и распечатать элементы массива?
int mark[5] = {19, 10, 8, 17, 9}
// change 4th element to 9
mark[3] = 9;
// take input from the user
// store the value at third position
cin >> mark[2];
// take input from the user
// insert at ith position
cin >> mark[i-1];
// print first element of the array
cout << mark[0];
// print ith element of the array
cout >> mark[i-1];Пример 1: отображение элементов
#include <iostream>
using namespace std;
int main() {
int numbers[5] = {7, 5, 6, 12, 35};
cout << "The numbers are: ";
// Printing array elements
// using range based for loop
for (const int n : numbers) {
cout << n << " ";
}
cout << "\nThe numbers are: ";
// Printing array elements
// using traditional for loop
for (int i = 0; i < 5; ++i) {
cout << numbers[i] << " ";
}
return 0;
}Выход:
The numbers are: 7 5 6 12 35 The numbers are: 7 5 6 12 35
Здесь мы использовали цикл for для итерации от i = 0 до i = 4.
На каждой итерации мы выводили числа [i].
Мы снова использовали цикл for на основе диапазона для вывода элементов массива.
Примечание. В нашем цикле на основе диапазона мы использовали код const int n вместо int n в качестве объявления диапазона. Однако более предпочтительным является const int n, потому что:
- Использование int n просто копирует элементы массива в переменную n во время каждой итерации. Это неэффективно с точки зрения памяти. n, однако, использует адрес памяти элементов массива для доступа к их данным, не копируя их в новую переменную. Это эффективно с точки зрения памяти.
- Мы просто печатаем элементы массива, а не изменяем их. Поэтому мы используем const, чтобы случайно не изменить значения массива.
Пример 2: получение входных данных от пользователя и сохранение их в массиве
#include <iostream>
using namespace std;
int main() {
int numbers[5];
cout << "Enter 5 numbers: " << endl;
// store input from user to array
for (int i = 0; i < 5; ++i) {
cin >> numbers[i];
}
cout << "The numbers are: ";
// print array elements
for (int n = 0; n < 5; ++n) {
cout << numbers[n] << " ";
}
return 0;
}Выход:
Enter 5 numbers: 11 12 13 14 15 The numbers are: 11 12 13 14 15
И снова мы использовали цикл for для итерации от i = 0 до i = 4.
На каждой итерации мы брали ввод от пользователя и сохраняли его в числах [i].
Затем мы использовали другой цикл for для печати всех элементов массива.
Пример 3: отображение суммы и среднего значений элементов, используемых для цикла
#include <iostream>
using namespace std;
int main() {
// initialize an array without specifying size
double numbers[] = {7, 5, 6, 12, 35, 27};
double sum = 0;
double count = 0;
double average;
cout << "The numbers are: ";
// print array elements
// use of range-based for loop
for (const double n : numbers) {
cout << n << " ";
// calculate the sum
sum += n;
// count the no. of array elements
++count;
}
// print the sum
cout << "\nTheir Sum = " << sum << endl;
// find the average
average = sum / count;
cout << "Their Average = " << average << endl;
return 0;
} Выход:
The numbers are: 7 5 6 12 35 27 Their Sum = 92 Their Average = 15.3333
В этой программе:
- Мы инициализировали
двойной массив с именем numbers, но не указали его размер. Мы также объявили три двойных переменных sum, count и average . Здесь sum = 0 и count = 0. - Затем мы использовали цикл for на основе диапазона для печати элементов массива. На каждой итерации цикла мы добавляем текущий элемент массива к sum.
- Мы также увеличиваем значение count на 1 на каждой итерации, чтобы мы могли получить размер массива к концу цикла for.
- После печати всех элементов мы печатаем сумму и среднее всех чисел. Среднее значение чисел определяется как среднее значение = сумма/количество.
Примечание: мы использовали ранжированный цикл for вместо обычного цикла for.
Обычный цикл for требует, чтобы мы указали количество итераций, которое задается размером массива. Но для цикла с ранжированием такие спецификации не требуются.
Если мы объявим массив размером 10, то массив будет содержать элементы с индекса 0 до 9.
Однако, если мы попытаемся получить доступ к элементу с индексом 10 или более 10, это приведет к неопределенному поведению.
НОУ ИНТУИТ | Лекция | Использование языка Free Pascal для обработки массивов
< Лекция 10 || Лекция 5: 123456
Ключевые слова: массив, множества, temperature, определение, структурированный тип, список, матрица, free, Pascal, тип данных, перечислимый тип, переменная, константы, операция присваивания, ПО, операции, значение, блок-схема, Произведение, единица, алгоритм, if, сортировка, место, индекс, распределение памяти, нижняя граница, верхняя граница, Размещение, память, программа, цикла, функция, длина, MAX, основание, остаток, деление, формальный параметр, приложение, поле, метка, таблица
5.1 Общие сведения о массивах
В предыдущих главах мы рассматривали задачи, в которых использовались скалярные переменные. Однако при обработке однотипных данных (целочисленных значений, строк, дат и т.
п.) оказывается удобным использовать массивы. Например, можно создать массив для хранения значений температуры в течении года. Вместо создания множества (365) переменных для хранения каждой температуры, например temperature1, temperature2, temperature3,… temperature365 можно использовать один массив с именем temperature, где каждому значению будет соответствовать порядковый номер (см. табл. 5.1).
| № элемента | 1 | 2 | 3 | 4 | … | 364 | 365 |
| temperature | -1. 5 | -3 | -6.7 | 1 | … | 2 | -3 |
Таким образом, можно дать следующее определение.
Массив — структурированный тип данных, состоящий из фиксированного числа элементов одного типа.
Массив, представленный в таблице 5.2, имеет 7 элементов, каждый элемент сохраняет число вещественного типа. Элементы в массиве пронумерованы от 1 до 7. Такого рода массив, представляющий собой просто список данных одного и того же типа, называют простым, или одномерным массивом. Для доступа к данным, хранящимся в определённом элементе массива, необходимо указать имя массива и порядковый номер этого элемента, называемый индексом.
Если возникает необходимость хранения данных в виде таблиц, в формате строк и столбцов, то необходимо использовать многомерные массивы.
| Элементы массива | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| -1.5 | -3.913 | 13.672 | -1.56 | 45. 89 | 4.008 | -3.61 |
В таблице 5.3 приведён пример массива, состоящего из трёх строк и четырёх столбцов. Это двумерный массив (матрица). Строки в нём можно считать первым измерением, а столбцы вторым. Для доступа к данным, хранящимся в этом массиве, необходимо указать имя массива и два индекса: первый должен соответствовать номеру строки, а второй номеру столбца, в которых хранится необходимый элемент.
| Номера столбцов | |||||
| 1 | 2 | 3 | 4 | ||
| Номера строк | 1 | 6. 3 | 4.3 | -1.34 | 5.02 |
| 2 | 1.1 | 4.7 | 8.12 | 8.5 | |
| 3 | -2.4 | -6.2 | 11.23 | 8.18 | |
После общего знакомства с понятием «массив», рассмотрим работу с массивами в языке Free Pascal.
5.2 Описание массивов
Для описания массива служат служебные слова array of. Описать массив можно двумя способами.
Первый — ввести новый тип данных, а потом описать переменные нового типа.
В этом случае формат оператора type следующий:
type
имя_типа = array [ тип_индекса ] of тип_компонентов;
В качестве типа_индекса следует использовать перечислимый тип. Тип_компонентов — это любой ранее определённый тип данных, например:
type massiv=array [ 0.. 1 2 ] of real; //Тип данных massiv из 13 элементов, которые нумеруются от 0 //до 12. dabc=array [ - 3.. 6 ] of integer; //Тип данных dabc из 10 элементов, которые нумеруются от //-3 до 6. var x, y : massiv; z : dabc;
Можно не вводить новый тип, а просто описать переменную следующим образом:
var переменная : array [ тип_индекса ] of тип_переменных;
Например:
var z, x : array [ 1.. 2 5 ] of word; //Массивы z и x из 25 значений типа word, которые нумеруются //от 1 до 25.g : array [ - 3.. 7 ] of real; //Массив g из 11 значений типа real, которые нумеруются от -3 //до 7.
Для описания массива можно использовать предварительно определённые константы:
const n=10; m=12; var a : array [ 1.. n ] of real; b : array [ 0..m] of byte;
Константы должны быть определены до использования, так как массив не может быть переменной длины!
Двумерный массив (матрицу) можно описать, применив в качестве базового типа (типа компонентов) одномерный:
type massiv=array [ 1.. 2 0 0 ] of real; matrica=array [ 1.. 3 0 0 ] of massiv; var ab : matrica;
Такая же структура получается при использовании другой формы записи:
type matrica = array [ 1.. 3 0 0, 1.. 2 0 0 ] of real; var ab : matrica;
или
var ab : array [ 1.. 3 0 0, 1.. 2 0 0 ] of real;
При всех трёх определениях мы получали матрицу вещественных чисел, состоящую из 300 строк и 200 столбцов.
Аналогично можно ввести трёхмерный массив или массив большего числа измерений:
type abc=array [ 1.. 4, 0.. 6, _ 7.. 8, 3.. 1 1 ] of real; var b : abc;
Дальше >>
< Лекция 10 || Лекция 5: 123456
Программа для чтения и печати массива на языке C
Описание программы:
Напишите программу для чтения и печати массива на языке C. Программа должна принимать целые числа от пользователя и сохранять их как элементы массива, а затем печатать их на стандартном выводе (консоли)
Пример ввода и вывода:
Ввод:
Все, что я хочу, с любым значением атрибута здесь: .
Вывод:
Все, что я хочу, с любым значением атрибута здесь: .
Предварительные требования:
Поскольку мы собираемся использовать массивы в этой программе, рекомендуется знать основы массивов C. Пожалуйста, прочитайте следующие статьи, чтобы узнать больше о массивах в C
- Введение в массивы C — как объявить, получить доступ и изменить массивы
- Двумерные массивы в C с примерами программ
- с к функциям в C
Чтение и печать массива в C Программа Объяснение:
- Запустите программу, объявив
массив размером
Глобальная константа SIZE –
целый массив [РАЗМЕР];
- Мы создали глобальная константа SIZE и инициализируется с помощью 10. Итак, размер массива 10. Так же используем макрос вместо глобальной константы — константа int SIZE = 10;
- Чтение массива: Нам нужно получить ввод от пользователя и обновить элементы массива. Используйте цикл for для перебора
массив и запрашивать у пользователя входные значения для каждого элемента массива (
множество).
Затем прочитайте значения, используя
scanf и сохранить их в соответствующем
элемент массива. - Печать массива: Используйте цикл for для вывода элементов массива на консоль. Цикл for начнется с и идет до SIZE
Программа для чтения и печати массива на языке C:
Напишем программу.
Все, что я хочу, с любым значением атрибута здесь: .
В приведенной выше программе нам не нужно использовать size в качестве дополнительного параметра функции. Поскольку у нас уже есть глобальная константа SIZE, мы можем использовать ее напрямую.
Выход программы:
Давайте скомпилируем программу, используя GCC (любой компилятор)
gcc read-print-arr.c
Приведенная выше команда создает исполняемый файл аут
Запустить программу.
Все, что я хочу, с любым значением атрибута здесь: .
Как видно из приведенной выше программы, программа считывает ввод пользователя и выводит его обратно на консоль.
Альтернативный способ: чтение и печать массива в C:
Вместо того, чтобы печатать массив поэлементно, давайте напечатаем его в одну строку.
Все, что я хочу, с любым значением атрибута здесь: .
Вывод программы:
Скомпилируйте и запустите программу
Все, что я хочу, с любым значением атрибута здесь: .
Чтение и печать массива с помощью функций языка программирования C:
Чтение и печать массива с помощью функции Объяснение программы:
- Создайте константу с именем ARRAY_SIZE с размером массива.
- В функции main() объявить целочисленный массив обр с ARRAY_SIZE элементов.
- Позвоните
функция read() из
функцию main() и передать
arr и его размер в качестве аргументов.
Функция read() предложит пользователю ввести значения для каждого элемента массива и обновит массив.
- Функция read() принимает целочисленный указатель обр и его размер как формальные аргументы – void read(int *arr, int size)
- Затем он запрашивает у пользователя входные значения для каждого элемента массива(
обр.
). - Значения считываются с помощью scanf() и сохраняется в соответствующем массиве( обр) элемент.
- Позвоните
функцию print() и передать
arr и его размер в качестве аргументов.
Функция print() напечатает элементы массива до
- . функция печати также принимает целочисленный указатель обр и размер как формальные аргументы – void print(int arr[], int size)
- Затем он использует цикл for для перебора каждого элемента arr, он печатает индекс элемента и соответствующее ему значение.
Чтение и печать массива с использованием функциональной программы:
Все, что я хочу, с любым значением атрибута здесь: .
📢В вышеуказанной программе Нам не нужно проходить size в качестве дополнительного параметра функции, так как у нас уже есть глобальная константа SIZE.
Вывод программы:
Скомпилируйте и запустите программу
Все, что я хочу, с любым значением атрибута здесь: .


3333
5
89
3
g : array [ - 3.. 7 ] of real;
//Массив g из 11 значений типа real, которые нумеруются от -3
//до 7.
. 3 0 0, 1.. 2 0 0 ] of real;
Затем прочитайте значения, используя
scanf и сохранить их в соответствующем
элемент массива.
).