Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shpory_po_programmirovaniyu_33_33_33_33_33.doc
Скачиваний:
44
Добавлен:
20.09.2019
Размер:
1.36 Mб
Скачать

45. Формирование массива из элементов заданных массивов.

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

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

A={6,0,-5,9,0,-4,8,-7,-5,44}

Y={6,9,8,44}

k=0;

for(i=in;i<ik;i++)

if (a[i]>0)

{

y[k]=a[i];

k++;

}

Для последовательной записи элементов в новый массив используется дополнительная переменная kсчетчик элементов в новом массиве. Начальное значение этой переменной принимается равной нулю, т.е считается что в новом массиве нет элементов. При обнаружении в исходном массиве элемента удовлетворяющего заданному условию, его значение заносится в новый массив на позицию k, а после счетчик элементов увеличивается на единицу (k=k+1). Таким образом, после обработки всего исходного массива по значению счетчика k можно определить, сформирован новый массив (k>0) и сколько в нем элементов (k).

46, 47, 48. Понятие и описание двумерных массивов.

Ввод-вывод двумерного массива.

Динамические двумерные массивы.

Двумерный массив в языке Си – это массив, элементами которого являются массивы.

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

float b[20][20]; //20 строк и 20 столбцов.

Двумерные массивы расположены в памяти по строкам.

При объявлении двумерного массива может быть выполнена его инициализация.

Универсальный способ выделения памяти под двумерный динамический массив.

int i, m, n;

puts(“Введите m и n”);

scanf(“%d%d”, &m, &n);

int **b=new int *[m]; //1

for(i=0; i<m; i++) //2

b[i]=new int [n]; //3

1 – объявляется переменная и выделяется память

2 – орг. цикл для выделения памяти под каждую строку массива

3 – выделение памяти на каждую строку массива и i-тому элементу массива указателей на строки присваивается адрес начала участка памяти, выд. под строку двумерного массива.

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

delete []b[i]; // освобождение выделенной динамической памяти

delete []b; //

Алгоритмы обработки двумерных массивов

Ввод матрицы

float x[10][10];

puts(“Введите m, n”);

scanf(“%d%d”, &m, &n);

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

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

{

printf(“Введите x[%d][%d]=”, i, j);

scanf(“%f”, &x[i][j]);

}

Вывод матрицы

puts(“Матрица x:”);

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

{

printf(“%8.2f”, x[i][j]);

printf(“\n”);

}

Сумма элементов, обработка относительно главной и побочной диагонали.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]