Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
С использованием матричных операций и функций
n=5; m=6; disp('Введите эл. матрицы'); for i=1:n for j=1:m a(i,j)=input('a(i,j)='); end end sr=mean(a'); disp('Среднее арифм. каждой строки:'); disp(sprintf('%5.2f ', sr))
Задача 40. Поиск максимального по модулю элемента в столбцах матрицы Условие задачи. Дана матрица В. В каждом столбце матрицы найти максимальное по модулю значение элемента и создать массив С из найденных значений. Поскольку в условии данной задачи ничего не сказано о размерах матрицы, то число её строк N и столбцов M будут целочисленными исходными данными, которые вводятся пользователем в процессе выполнения программы, далее вводятся элементы матрицы B (вещественные числа). В данной задаче требуется выполнять одинаковые действия с каждым столбцом матрицы (матрица будет условно рассматриваться как набор столбцов). Поэтому в цикле для каждого столбца необходимо находить максимальный по модулю элемент (вещественный, как и все элементы) и найденный результат помещать в очередной элемент нового массива С, который будет результатом в этой задаче. Количество элементов в массиве С, очевидно, должно быть таким же, как количество столбцов в матрице В. Поиск максимального по модулю элемента в одном столбце с номером j выполняется так же, как в одномерном массиве. Для этого сначала в специально выделенную для максимума переменную MAX помещают модуль первого элемента столбца B[1,j]. Далее все остальные элементы этого столбца, взятые по модулю, сравнивают с текущим значением переменной MAX (для перемещения по остальным элементам столбца изменяют i от 2 до N), и, если встречается большее значение, то его помещают в переменную MAX. По окончании всех сравнений в переменной MAX останется значение самого большого по модулю элемента столбца, и его надо поместить в очередной элемент массива С. Его номер, очевидно, должен совпадать с номером столбца матрицы, в котором осуществлялся поиск максимума. Описанные выше действия должны повторяться в цикле для каждого столбца матрицы В, в результате чего будут получены все элементы массива С. Структурированная запись алгоритма 40 1. Ввести число строк и столбцов N и M и элементы матрицы В. 2. В цикле для j = 1,M повторять: 2.1. Присвоить начальное значение MAX =abs (B[1,j]) 2.2. В цикле для i =2, N повторять: 2.2.1. Выполнять сравнение abs (B[i,j])>MAX. Если условие выполняется, то присвоить MAX = abs (B[i,j]).
2.3. Занести MAX в новый массив С[ j ]= MAX. 3. Вывести элементы массива С. Схема алгоритма
Текст программы на языке Си #include <stdio.h> #include <math.h> #define N 25 int main (void) { int n,m,i,j; double b[N][N],c[N],max; printf ("\n Введите размеры матрицы n и m\n"); scanf ("%d%d", &n,&m); for (i=0; i<n; i++) { printf ("Введите элементы %d строки \n",i); for (j=0; j<m; j++) scanf ("%lf", &b[i][j]); } for (j=0; j<m; j++) { max=fabs(b[0][j]); for (i=1; i<n; i++) if (fabs(b[i][j])>max) max=fabs(b[i][j]); c[j]=max; } printf ("Получен массив С: \n"); for (i=0; i<m; i++) printf ("%3.0lf", c[i]); return 0; } Текст программы на языке Паскаль Program Pr_40; Var B: array [1..20, 1..20] of real; C: array [1..20] of real; N, M, i, j: integer; MAX: real; begin writeln(' Введите размеры матрицы'); readln(N,M); for i:=1 to N do begin writeln('Введите элементы строки',i); for j:=1 to M do read(B[i,j]); end; for j:=1 to M do begin MAX:=abs(B[1,j]); for i:=2 to N do if abs(B[i,j])>MAX then MAX:= abs(B[i,j]); C[j]:=MAX end; writeln('Получен массив С: '); for j:=1 to M do write(C[j]:6:1); end. Текст программы на языке Фортран Program Pr_40 Implicit none real, allocatable:: B(:,:), C(:) integer N, M, i, j real MAX print *, ' Введите размеры матрицы' read *, N,M allocate(B(N,M)) allocate(C(M)) do i=1, N print *, 'Введите элементы ',i,' строки' read *, (B(i,j),j=1,M) enddo do j=1, M do MAX=abs(B(1,j)); do i=2, N if (abs(B(i,j))>MAX) then MAX:= abs(B(i,j)) endif enddo C(j)=MAX enddo print *,'Получен массив С: ' print *,(C(j),j=1,M) deallocate(B) deallocate(C) end Программа на языке Python print("Введите N -- число строк матрицы B: ") N=int(input()) print("Введите M -- число столбцов матрицы B: ") M=int(input()) B = [] # Создаем пустой список строк # в Python списки индексируются с 0 for i in range(0, N): B.append([]) # Добавляем пустой список элементов i-й строки for j in range(0, M): print("Введите B[{0},{1}]: ".format(i+1,j+1)) B[i].append(float(input())) C= [] # Создаем пустой список максимальных модулей for j in range(0, M): # j = 0,... M-1 -- всего M C.append(-1.0) # Добавляем новый элемент со значением, # недопустимым для модуля числа: если оно таким и # останется, значит что-то идет не так... MAX = abs(B[0][j]) for i in range(1, N): if abs(B[i][j]) > MAX: MAX = abs(B[i][j]) C[j] = MAX print("Получен массив C:") for i in range(0, M): print("C[{0}]={1}".format(i+1, C[i])) Программа в системе Матлаб n=input('Введите n='); m=input('Введите m=');
for i=1:n disp(sprintf('Введите элементы %d строки',i)) for j=1:m B(i,j)=input('B(i,j)='); end end for j=1:m MAX=abs(B(1,j)); for i=2:n if abs(B(i,j))>MAX MAX=abs(B(i,j)); end end C(j)=MAX; end disp(' Получен массив С: ') disp(C)
|
||||||
Последнее изменение этой страницы: 2021-04-12; просмотров: 141; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.111.49 (0.015 с.) |