Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 230; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.39 (0.009 с.) |