Лабораторная работа № 4

Программирование циклических процессов с использованием

Многомерных массивов. Динамическое распределение памяти

Цель работы:

Изучить работу с многомерными массивами, освоить возможности динамического размещения данных.

Краткие теоретические сведения

Кроме одномерных массивов возможна работа с многомерными массивами. Объявление многомерного массива:

<тип><имя>[<размер 1 >][<размер 2 >]…[<размер N>]={{список начальных значений}, {список начальных значений},…};

Наиболее быстро изменяется последний индекс элементов массива, поскольку многомерные массивы размещаются в памяти компьютера в последователь­ности столбцов.

Например, элементы двухмерного массива b[2][1] размещаются в памяти в следующем порядке:

b[0][0], b[0][1], b[1][0], b[1][1], b[2][0], b[2][1].

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

int a[3][4] = {{0,1,2,0},{9,-2,0,0},{-7,1,6,8}};

Если в какой-то группе {…} отсутствует значение, то соответствующему элементу присваивается 0. Предыдущий оператор будет эквивалентен следующему определению:

int a[3][4] = {{0,1,2},{9,-2},{-7,1,6,8}};

При обработке двухмерных массивов используются вложенные циклы. Например, ввод массива int a[5][4]:

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

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

scanf(“%d”,&a[i][j]);

Пример программы

Создать двухмерный массив целых чисел NxM (N и M не более 50), используя функцию rand, и вывести на экран в форме матрицы, N,M ввести с клавиатуры:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#define rnd (rand()/ 32768.0) /* rand - генератор случайных чисел от

0 до int, rnd – от 0 до 1 */

void main(void)

{ int i,j,n,m,a[50][50];

puts(“\n Input n, m:”); scanf(“%d %d”,&n,&m);

printf(“\n Array a \n”);

for(i=0; i<n; i++) // Оформление вывода в виде матрицы

for(j=0; j<m; j++) {

a[i][j]=rnd*10-5; // случайные числа от –5 до 5

printf(“%d%c“, a[i][j], (j= =m-1)?’\n’:’ ‘);

}

getch();

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: