Краткие теоретические сведения. Определение массива содержит тип элементов, имя массива и количество элементов в массиве

Определение массива

Определение массива содержит тип элементов, имя массива и количество элементов в массиве.

int mas[10];

                   

Т. е. индексы элементов в массиве mas могут меняться от 0 до 9, всего в массиве 10 элементов.

Инициализация массива

Инициализация массивов возможна при их определении:

double d[] = {1, 2, 3, 4, 5};

Длина массива вычисляется компилятором по количеству значений перечисленных в фигурных скобках.

Указатели и массивы

Имя массива без индекса является указателем-константой, т. е. адресом первого элемента массива (a[0]).

a

               

*a = = a[0];

*(a+1) = = a[1];

.........

*(a+i) = =a[i];

В соответствии с синтаксисом в C/C++ существуют только одномерные массивы, но их элементами, в свою очередь, тоже могут быть массивы.

int a[5][5];

Для двумерного массива:

a[m][n] = = *(a[m]+n) = = *(*(a+m)+n);

1.4. Формирование динамических массивов
с использованием операций new и delete

Для динамического распределения памяти используются операции new и delete. Операция

new имя_типа

или

new имя_типа инициализатор

позволяет выделить и сделать доступным свободный участок памяти, размеры которого соответствуют типу данных, определяемому именем типа. В выделенный участок заносится значение определяемое инициализатором, который не является обязательным параметром. В случае успешного выделения памяти операция возвращает адрес начала выделенного участка памяти, если участок не может быть выделен, то возвращается NULL.

Примеры:

int *i;

i=new int(10);

float *f;

f=new float;

int *mas=new[5];

В примерах 1, 2 показано как выделить память под скалярные переменные, пример 3 показывает выделение памяти под массив переменных.

Операция delete указатель освобождает участок памяти ранее выделенный операцией new.

Пример:

Функция для формирования двумерного динамического массива

int ** make_matr(int n)

{

int **matr;

int i,j;

matr=new int*[n];

for (i=0;i<n;i++)

{

matr[i]=new int[n];

for (j=0;j<n;j++)

matr[i][j]=random(10);

}

return matr;

}

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

Чтобы освободить память необходимо выполнить цикл для освобождения одномерных массивов

for(int i=0;i<n;i++)

delete matr[i];

После этого освобождаем память на которую указывает указатель matr

delete [] matr;

Варианты заданий

1.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить элемент с номером К.

4) Добавить после каждого четного элемента массива элемент со значением 0.

5) Распечатать полученный массив.

 

 

2.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить первый элемент равный 0.

4) Добавить после каждого четного элемента массива элемент со значением M[I-1]+2.

5) Распечатать полученный массив.

 

3.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить все элементы равные 0.

4) Добавить после первого четного элемента массива элемент со значением M[I-1]+2.

5) Распечатать полученный массив.

 

4.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить элементы, индексы которых кратны 3.

4) Добавить после каждого отрицательного элемента массива элемент со значением |M[ I-1 ]+1|.

5) Распечатать полученный массив.

 

5.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить элементы кратные 7.

4) Добавить после каждого нечетного элемента массива элемент со значением 0.

5) Распечатать полученный массив.

 

6.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить элемент с заданным номером.

4) Добавить после первого четного элемента массива элемент со значением M[I-1]+2.

5) Распечатать полученный массив.

 

7.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить последний элемент равный 0.

4) Добавить после элемента массива с заданным индексом элемент со значением 100.

5) Распечатать полученный массив.

8.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить все элементы с заданным значением.

4) Добавить перед каждым четным элементом массива элемент со значением 0.

5) Распечатать полученный массив.

 

9.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить первый элемент с заданным значением.

4) Сдвинуть массив циклически на К элементов вправо.

5) Распечатать полученный массив.

 

 

10.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить 5 первых элементы массива.

4) Добавить в конец массива 3 новых элемента.

5) Распечатать полученный массив.

 

11.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить 5 последних элементов массива.

4) Добавить в начало массива 3 элемента с значением M[I+1]+2.

5) Распечатать полученный массив.

 

 

12.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Поменять местами минимальный и максимальный элементы массива.

4) Удалить из массива все элементы, превышающие его среднее значение более, чем на 10%.

5) Распечатать полученный массив.

 

13.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Удалить из массива все элементы совпадающие с его минимальным значением.

4) Добавить в начало массива 3 элемента с значением равным среднему арифметическому массива.

5) Распечатать полученный массив.

 

14.

1) Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2) Распечатать полученный массив.

3) Перевернуть массив и, если число элементов массива нечетное, удалить его средний элемент.

4) Добавить в начало массива 3 элемента с значением M[ I+10 ]-2.

5) Распечатать полученный массив.

Методические указания

· При выполнении работы используются динамические массивы. Определяются сами массивы, затем пользователь вводит реальную длину массива и работает с массивом той длины, которую он сам указал.

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


Лабораторная работа № 3
“Строки”

Цель:Изучение символьных и строковых переменных и способов их обработки в языке Си.