Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подбельский Фомин_Программирование на языке СИ_...doc
Скачиваний:
356
Добавлен:
10.08.2019
Размер:
53.81 Mб
Скачать

10.4. Многомерные динамические массивы с переменными размерами

Порядок выполнения задания (общая схема алгоритма):

1. Ввести размеры многомерных массивов.

2. Сформировать динамические массивы заданных размеров с помощью функций malloc( ) и/или calloc( ).

3. Заполнить массивы значениями, т.е. определить значения элементов массивов (удобнее сделать это не вручную, т.е. не вводя значения элементов с клавиатуры, а алгоритмически).

4. Выполнить действия над массивами, необходимые для решения конкретной поставленной задачи, сформировать новый массив-результат (или новые массивы).

5. Напечатать в наглядном виде массив-результат.

6. Удалить динамические массивы с помощью функции

free( ).

Входные данные:

• размеры массивов;

• данные, определяющие значения элементов массивов.

Выход: Представление на экране одного или нескольких массивов-результатов.

Схема обработки многомерного динамического массива (для матрицы).

1. Определяем указатель на массив указателей на объекты заданного типа (тип **uk).

2. Вводим размеры матрицы N, М.

3. Создаем динамический массив из N указателей на указатели:

uk = (тип **)malloc(N*sizeof(mun *));

или

uk = (тип **) calloc(N, sizeof(mun *));

4. В цикле создаем N массивов-строк (по М элементов в каждом)

for (...) uk[i] = (тип *)malloc(M*sizeof(mun);

или

for (...) uk[i] = (тип *) calloc(M, sizeof(mun));

5. Обработка массива (работа с индексированными элементами uk[i][j]...);

6. В цикле удаление N массивов-строк:

for(... i ...) free(uk[i]);

7. Удаление массива указателей:

free(uk);

Каждое задание данного подраздела логически делится на две части:

1) формирование многомерного массива требуемых размеров и определение значений его элементов;

2) решение задачи, для которой один или более массивов (заполненных при выполнении первой части задания) являются исходными данными.

10.4.1. Варианты задач для 1-й части задания по многомерным массивам (правила формирования многомерного массива)

  1. Ввести предельные значения xmin, хтах , ymin , ymax и количество значений пх и пу , принимаемых соответственно переменными

Сформировать матрицу А с размерами nx на пy и присвоить ее

где функции F(xi, yj) могут быть определены следующими аналитическими соотношениями:

где а = {0,2 ÷ 0.4}, b = (0,8 ÷ 1.0}.

2. Ввести значение п размерность вектора А ={a1, а2,..., ап} и значения его элементов аi, i = Сформировать квадратную матрицу В с размерами п на п и определить значения ее элементов по следующему правилу:

3. Введя размеры п, т матрицы X = {xi,j }, определить значения ее элементов хi j (i=; ; j = ) с помощью датчика псевдослучайных чисел из библиотеки стандартных функций компилятора. "Заполнение" матрицы выполнять по строкам, т.е. последовательно определять значения: x11, х12, ... хпт-1, хпт.

4. Введя значения п и т, сформировать матрицу Z = {zi j } с размерами п на т. Считая, что каждые т членов последовательности

хi = [1003 xi-1 +19] mod 7777, (i= 1,2,..., х0 - задано).

определяют значения элементов очередной строки матрицы, определить значения элементов матрицы Z = {zi j} .

Предварительно ввести значение х0 .

5. Ввести размеры п, т матрицы А = {аi j} и определить значения ее элементов по следующему правилу:

где b, с, d - величины, значения которых должны быть определены, например, таким образом: b = 1,5; с = 3,0; d = 0,5.

6. Введя значение п, сформировать квадратную матрицу (часть треугольника Паскаля):

где С = С = 1, а остальные элементы определяются рекуррентной формулой:

7. Введя значения т, п, r, определить трехмерный массив Р = {pi j k } значения элементов которого: