Студопедия

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

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Заполнение матрицы случайными числами






Выполняется также в двойном цикле аналогично одномерным массивам. В примере показано заполнение целой матрицы случайными числами в интервале [a, b] (для вещественных чисел формула изменится – см. одномерные массивы). В этой и последующих программах будем считать, что объявлена целая матрица M на N, где M и N — целые константы (объявленные через const), а также целые переменные i и j.

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

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

A[i][j] = random(b-a+1) + a;

Вывод элементов матрицы

Двумерные массивы необходимо выводить в привычном виде (по строкам), начиная вывод новой строки массива в новую строку экрана.

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

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

printf(“%d \t”, A[i][j]);

printf (“\n”);

Суммирование элементов матрицы

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

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

S=S+b[i][j];

Суммирование диагональных элементов матрицы (вычисление следа матрицы)

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

S=S+b[i][i];

Суммирование элементов заданной строки матрицы

Для двумерного массива b размером M на N необходимо вычислить сумму элементов строки с номером k.

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

S=S+b[k][j];

Суммирование элементов строк матрицы

Необходимо вычислить сумму элементов каждой строки двумерного массива b размером M на N с выводомрезультатов на экран.

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

{ S=0; // обнуление суммы каждой строки

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

S=S+b[i][j];

printf (“Сумма элементов строки %d=%d \n “, i, S); }

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

Необходимо заменить строки матрицы ее столбцами, а столбцы – строками.

int b[m][n], a[n][m], i, j;

….

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

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

a[i][j]=b[j][i];

 

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

int b[n][n], i, j, P;

….

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

for (j=i+1; j< n; j++)

{ P= b[i][j];

b[i][j]=b[j][i];

b[j][i]=P;

}

Умножение матрицы на вектор

int a[m][n], i, j, s, b[n], c[m];

….

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

{ s=0;

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

s=s+a[i][j]*b[j];

c[i]=s;

}

Удаление строки из матрицы

Требуется удалить строку с заданным номером k. Решение задачи аналогично удалению элемента из одномерного массива. Все строки, начиная с (k+1)-й, нужно переместить вверх. Число строк уменьшается на 1.

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

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

b[i][j]=b[i+1][j];

Удаление столбца осуществляется аналогично.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.