Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Двумерный массив целых чисел («Матрица»)

Читайте также:
  1. V. АКУСТИЧЕСКИЕ СВОЙСТВА ГОРНЫХ ПОРОД И МАССИВОВ. ОСНОВНЫЕ ФАКТОРЫ, ВЛИЯЮЩИЕ НА АКУСТИЧЕСКИЕ СВОЙСТВА ГОРНЫХ ПОРОД
  2. Арифметические операции на множестве действительных чисел
  3. Борьба с трещинообразованием в массивных бетонных сооружениях.
  4. В мире чисел
  5. Ввод с помощью датчика псевдослучайных чисел
  6. Воздействия на горные породы и их массивы
  7. Выбор типа, тактности, чисел оборотов и цилиндров и расположения цилиндров двигателя
  8. ДЕ №3 / Оценка устойчивости склонов, откосов и массивных подпорных стенок
  9. Делимость целых чисел и деление с остатком в кольце целых чисел

Одномерные массивы соответствуют векторам, двумерным массивам можно поставить в соответствие – матрицы.

Двумерные массивы – это вид удобной записи, так как память имеет одно измерение.

Наименьший адрес в памяти соответствует значению элемента первого столбца в первой строке matrix[0][0], наибольший адрес – значению элемента в последнем столбце последней строки матрицы matrix [N-1][M-1].

Доступ к элементам осуществляется по индексам строк и индексам столбцов.

Можем представить двумерный массив как одномерный, каждый элемент которого есть одномерный массив.

Двумерный массив может быть инициализирован присваиванием элементам по одной строке каждый раз:

int matr [][4] = {{3,5,7}, {- 2,- 4,- 6}, {1,7,13}};

При таком описании в памяти будет выделен блок для таблицы размером (3х4) х 2 байта, общим объемом – 24 байта. Последний элемент в каждой строке будет содержать нулевое значение.

Для доступа к элементу матрицы в памяти, компилятор расширяет таблицу – дескриптор массива для включения информации о количестве столбцов и длине каждой строки:

Начальный адрес массива Matrix

Количество строк Row Count

Количество столбцов Column Count

Размер типа ST = sizeof (int)

Длина строки ST * Column Count

Набор функций для работы с матрицей:

1. Ввод/вывод матрицы.

void Enter_ Matrix (int Array[][N], int &m, int &n)

{

int i, j;

printf ("\n Введи размерности матрицы:");

scanf ("%d %d", &m, &n);

printf (" Введи матрицу :\n");

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

for ( j = 0; j < n; j++) scanf ("%d", & Array [i][j]);

}

void Print_ Matrix (int Array [][N], int m, int n)

{

int i, j;

printf ("\n Матрица – результат :\n");

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

{ for( j=0; j < n; j++) printf ("%3d ", Array [i][j]);

printf("\n");

}

}

2. Поиск минимального и максимального элементов матрицы. Поменять их местами.

void Min_Max (int A [][N], int m, int n, int& Min, int& Max)

{

int i, j, s_min = 0, c_min = 0, s_max = 0, c_max = 0 ;

Min = Max = A [0][0];

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

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

{

if (A [i][j] < Min) {Min = A [i][j]; s_min = i; c_min = j;}

if (A [i][j] > Max) {Max = A [i][j]; s_max= i; c_max = j;}

}

A [s_min][c_min] = Max;

A [s_max][c_max] = Min;

}

3. Транспонирование матрицы.

void Reverse (int A [][N], int n)

{

int i, j, temp;

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

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

{ temp = A [i][j]; A [i][j] = A [j][i]; A [j][i] = temp; }

}

4. Сортировка строк матрицы по возрастанию их средних значений.

void Medium_Value (int A [][N], int m, int n)

{

int i, j, k, sum, tmp;

float Medium[N], temp;

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

{ sum = 0;

for(j = 0; j < n; j ++) sum += A [i][j];

Medium [i] = (float) sum / n;

}

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

{ k = i;

for (j = i + 1; j < m; j++) if ((Medium[k] - Medium[j]) > 0) k = j;

temp = Medium[i]; Medium[i] = Medium[k]; Medium[k] = temp;

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

{ tmp = A [i][j]; A [i][j] = A [k][j]; A [k][j] = tmp; }

}

}

5. Удалить из матрицы строку и столбец со значением максимального элемента.

void Delete_Max ( int A [][N], int &m, int &n, int Smax, int Cmax)

{

int i, j;

if (Smax < m - 1)

for (i = Smax; i < m - 1; i++)

for (j = 0; j < n; j++) A [i][j] = A [i + 1][j];

m--;

if (Cmax < n - 1)

for (j = Cmax; j < n - 1; j++)

for (i = 0; i < m; i++) A [i][j] = A [i][j + 1];

n--;

}


<== предыдущая страница | следующая страница ==>
Символьный массив («Строка») | Массив строк («Страница»)

Дата добавления: 2014-11-14; просмотров: 318; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.004 сек.