Массив как матрица

C (programming language)

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


#include <stdio.h>
#include <stdlib.h>

#define ROWS 10		// Количество строк в матрице
#define COLUMNS 10	// Количество столбцов в матрице

/**
 * Функция возвращает элемент по его позиции в матрице.
 *	dynamic_array	- указатель на динамический массив,
 *	row				- номер строки,
 *	column			- номер колонки,
 * Возвращаемое значение:
 *	- содержание элемента матрицы.
 */
int get_element(int *dynamic_array, int row, int column);

void main(void)
{
	// Создаем динамический массив.
	int *dynamic_array = (int*)calloc(COLUMNS * ROWS, sizeof(int));

	// Заполняем массив значениями по порядку.
	for (int i = 0; i < COLUMNS * ROWS; i++)
	{
		dynamic_array[i] = i;
	}

	// Выводим матрицу построчно.
	for (int i = 0; i < ROWS; i++)
	{
		for (int j = 0; j < COLUMNS; j++)
		{
			printf("%3d", get_element(dynamic_array, i, j));
		}
		printf("\n");
	}

	free(dynamic_array);
}

int get_element(int *dynamic_array, int row, int column)
{
	/*
		Умножаем размер строки на количество отсчитанных строк,
		и добавляем текущую позицию в строке. Получившееся число
		указывает на позицию в линейном массиве. Добавляем смещение
		к указателю и получаем адрес значения в динамическом массиве.
		Извлекаем значение по указателю.
	*/
	return *(dynamic_array + COLUMNS * row + column);
}

1С:Предприятие

Самый большой опыт работы был накоплен при внедрении программных продуктов от компании "1С".
Подробнее...

PALO

Этот продукт мы включили специально для тех заказчиков, которые решили организовать финансовый учет, на своем предприятии, либо ведут его в таблицах MS Excel.
Подробнее...

Профессионалам

Информационные материалы содержащие справочную информацию или полезные сведения для повышения квалификации.
Подробнее...