Массивы
Массив — основа для хранения однородных данных.
Массивы предназначены для хранения данных одного типа и для удобного доступа к содержимому этих данных.
Синтаксис описания массива:
тип_массива имя_переменной [ число_элементов ] ;
Например, вместо того, чтобы описывать пять переменных:
int xl , х2, х3, х4, х5;
можно записать:
int х[5] ;
При этом в переменной х хранится не одно значение, а последовательность из 5 значений типа int - компилятор выделит память для массива следующим образом (рис.1):
x[0] x[1] x[2] x[3] x[4]
baseAddr baseAddr + 4 baseAddr + 8 baseAddr + 12 baseAddr + 16
(Рис.1)Распределение памяти для массива из пяти чисел типа int.
К каждому значению можно обращаться, указывая его номер (индекс), который может быть не только числовой константой, но и любым допустимым выражением Си++, возвращающим значение типа int. В Си++ принято, что нумерация переменных начинается с нуля. То есть первый элемент имеет индекс 0, второй — индекс 1, пятый — индекс 4.
После объявления массива можно заполнить его числами, используя индексный оператор [] :
x[0]=-200; x[1]=-100; x[2]=0; x[3]=100; x[4]=200;
Массив можно объявить и заполнить одновременно:
int x[5] = {-200, -100, 0, 100, 200};
Чтобы получить значение первого элемента массива х, надо записать:
х[0]
Можно обращаться к элементам и используя переменную:
i = 3;
x[0] = x[i] + x[i+l]; // x[0]=300
Размер массива
Размер массива в Си++ определяется заранее и указывается конкретным числом или константой. В отличие от индексов, в качестве которых может выступать любое выражение, размер массива на протяжении работы программы неизменен. Нельзя написать:
len = 20;
int x[len] ; // неправильно!
Компилятор сразу сообщит об ошибке — «Constant expression required» (требуется константа).
Массивы, размер которых задается в программе заранее и в дальнейшем не изменяется, называются статическими. В Си++ можно также использовать и динамические массивы, размеры которых во время работы программы могут меняться, но для этого надо с помощью специальных операторов запрашивать у Windows память, потом освобождать ее и самому следить за корректностью ее использования. Это обычно требуется в основном для задач, где надо обрабатывать большие, но часто меняющиеся по размеру объемы информации.
Массивы могут иметь более одного измерения..
Задание №3. Задать матрицу из шести элементов в виде Х(2×3) – две строки и три столбца и с теми же элементами, но в виде Х(3×2) - три строки и два столбца, значения элементам затать: 2,3,8,5,4,7. В обоих случаях выдать элементы со значениями 3 и 4.
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
int main(int argc, char* argv[])
{int x[2][3]= {2,3,8,5,4,7}; // 2- строки, 3- столбца
int y[3][2]= {2,3,8,5,4,3}; // 3- строки, 2- столбца
cout << "x[0][1] (3) =" << x[0][1] << endl; // счет идет с нуля
cout << "x[1][1] (4) =" << x[1][1] << endl;
cout << "x[0][1] (3) =" << x[0][1] << endl; //// для аналогичного результата
cout << "x[2][0] (4) =" << x[2][0] << endl;
getch();
return 0;
}