Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Заполнение матрицы случайными числами
Выполняется также в двойном цикле аналогично одномерным массивам. В примере показано заполнение целой матрицы случайными числами в интервале [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]; Удаление столбца осуществляется аналогично.
|