program Project1; uses var a:array[1..4,1..4] of integer; i,j,min,max,r,r1,minn:integer; begin min:=0; max:=0; minn:=0; randomize; for i:=1 to 4 do for j:=1 to 4 do a[i,j]:=random(10);{запрлняем массив} for i:=1 to 4 do begin; for j:=1 to 4 do write (a[i,j]:2);{выводим массив} writeln; end; .................................... for i:=1 to 4 do for j:=1 to 4 do begin if a[i,j]<min then min:=a[i,j]; end; writeln ('min element',min); {находим и выводим мин} ................................... for i:=1 to 4 do for j:=1 to 4 do begin if a[i,j]>max then max:=a[i,j]; end; writeln ('max element',max);{находим и выводим макс} ................................... for i:=2 to 2 do for j:=1 to 4 do begin if a[2,j]>0 then r:=r+1; end; writeln ('kol-vo elementov >0 vo 2i stroke',r); ................................. for i:=3 to 3 do for j:=1 to 4 do begin if a[3,j]>0 then r1:=r1+1; end; writeln ('kol-vo elementov >0 vo 3i stroke',r1); ............................. for i:=3 to 3 do for j:=1 to 4 do begin if a[3,j]<minn then minn:=a[3,j]; end; for i:=3 to 3 do for j:=1 to 4 do begin if a[3,j]=minn then a[3,j]:=0; end; for i:=1 to 4 do begin; for j:=1 to 4 do write (a[i,j]:2); writeln; end;{находим и заменяем мин элемент третей строки на 0} ............................. readln; end.
Перейти к содержанию
Найти максимальные элементы столбцов матрицы
Просмотров 7.1к. Обновлено 15 октября 2021
Найти максимальный элемент каждого столбца матрицы.
При поиске наибольших элементов в столбцах внешний цикл должен перебирать столбцы, а внутренний — элементы в столбцах. Это значит, что во внутреннем цикле меняется первый индекс элемента, второй остается постоянным в рамках одной итерации внешнего цикла.
В теле внешнего цикла сначала предполагается, что наибольшим является первый элемент текущего столбца. Первый элемент каждого столбца имеет индекс строки, равный 1 (или 0 при индексации с нуля). Второй индекс — это номер столбца, определяется счетчиком внешнего цикла.
Далее в теле внешнего цикла выполняется внутренний цикл, перебирающий элементы текущего столбца, начиная со второго элемента столбца. В теле внутреннего цикла текущий элемент сравнивается с тем, что записан в переменной-максимуме. Если текущий больше, то он присваивается этой переменной.
После завершения внутреннего цикла переменная-максимум будет содержать наибольший элемент столбца, который можно вывести на экран.
Pascal
const N = 15; M = 10;
var
arr: array[1..N,1..M] of byte;
i,j,max: byte;
begin
randomize;
for i:=1 to N do begin
for j:=1 to M do begin
arr[i,j] := random(256);
write(' |',arr[i,j]:3,'| ');
end;
writeln;
end;
for i:=1 to M do
write(' ----- ');
writeln;
for j:=1 to M do begin
max := arr[1,j];
for i:=2 to N do
if arr[i,j] > max then
max := arr[i,j];
write(' ',max:3,' ');
end;
writeln;
end.
Пример(ы) выполнения программы на языке Pascal:| 75| |230| | 21| | 95| |219| |102| | 64| |125| | 8| |132|
|190| | 73| |127| | 85| |110| |188| | 45| |108| |104| |233|
| 85| |160| | 47| |158| | 32| | 75| | 59| |149| |175| |226|
|179| |208| |239| |238| |120| | 83| |120| |135| |252| | 19|
| 33| |217| |247| | 82| | 0| |125| |190| | 53| | 87| |186|
|239| | 48| | 29| | 35| |210| | 96| | 46| | 17| |106| |225|
|232| | 1| |201| | 1| | 54| |249| | 46| |179| |122| | 58|
| 66| |190| |161| | 84| | 88| | 33| |201| | 64| | 43| | 7|
|206| |114| |196| | 4| |137| |165| | 63| |144| |183| |121|
|151| | 9| |161| |120| |197| |228| | 20| |121| |176| |217|
|109| | 19| |188| |105| |114| |230| |217| |172| |194| |127|
|138| |222| |116| |132| | 92| |105| |222| | 73| | 94| | 16|
| 30| |127| |125| | 54| |134| |240| | 75| |227| |215| | 38|
| 87| | 64| |167| |191| |212| |157| | 62| |231| |166| |177|
|184| |179| |201| | 19| |242| |185| | 31| |226| |101| |123|
----- ----- ----- ----- ----- ----- ----- ----- ----- -----
239 230 247 238 242 249 222 231 252 233
Язык Си
#include < stdio.h>
#define N 15
#define M 10
main() {
int arr[N][M], i, j, max;
srand(time(NULL));
for (i=0; i< N; i++) {
for (j=0; j< M; j++) {
arr[i][j] = rand() % 256;
printf(" |%3d| ", arr[i][j]);
}
printf("n");
}
for (j=0; j< M; j++)
printf(" ----- ");
printf("n");
for (j=0; j< M; j++) {
max = arr[0][j];
for (i=1; i< N; i++)
if (arr[i][j] > max)
max = arr[i][j];
printf(" %3d ", max);
}
printf("n");
}
Python
найти максимальный элемент столбца матрицы Python
from random import random
N = 15
M = 10
arr = []
for i in range(N):
lst = []
for j in range(M):
lst.append(int(random() * 256))
arr.append(lst)
for i in range(N):
for j in range(M):
print(" |%3d| " % arr[i][j], end='')
print()
for i in range(M):
print(" ----- ", end='')
print()
for j in range(M):
mx = arr[0][j]
for i in range(N):
if arr[i][j] > mx:
mx = arr[i][j]
print(" |%3d| " % mx, end='')
print()
КуМир
алг
нач
цел N = 15, M = 10
целтаб t[1:N,1:M]
цел mx, i, j
нц для i от 1 до N
нц для j от 1 до M
t[i,j] := irnd(256)
вывод " |",t[i,j]:3,"| "
кц
вывод нс
кц
нц для i от 1 до M
вывод " ----- "
кц
вывод нс
нц для j от 1 до M
mx := t[1, j]
нц для i от 2 до N
если t[i,j] > mx то
mx := t[i,j]
все
кц
вывод ' ',mx:3,' '
кц
кон
Basic-256
N = 15
M = 10
dim arr(N,M)
for i=0 to N-1
for j=0 to M-1
arr[i,j] = int(rand*90)+10
print arr[i,j] + " ";
next j
next i
for j=0 to M-1
print "-----";
next j
for j=0 to M-1
max = arr[0,j]
for i=1 to N-1
if arr[i,j] > max then max = arr[i,j]
next i
print max + " ";
next j
Помогите разобраться. Изначально ввел и вывел матрицу через процедуру, а дальше хочу обратиться к этой матрице(а не вводить новую) и обрабатывать ее. Выдает максимум как 0. Почему?
Как сделать так чтобы я один раз ввел матрицу, а далее уже через разные функции и процедуры обрабатывал ее?
Вот код : http://pastebin.com/CHMBUGx4
Program brain;
uses crt;
type
matr= array [1..50, 1..50] of integer;
var
a:matr;
procedure vvod(i, j, n: integer ; a:matr); //ввод матрицы
begin
for i:=1 to n do
for j:=1 to n do
read(a[i,j]);
readln;
begin
for i:=1 to n do
begin
for j:= 1 to n do
write(' ',a[i, j]);
writeln;
writeln;
end;
end;
end;
function maxelem {var a:matr;}( n:integer; var a:matr):real;
var
//a:matr;
max:real;
i, j: integer;
begin
max:=a[1,1];
for i:=1 to n do
for j:=1 to n do
if max < a[i,j] then max:=a[i,j];
writeln('max= ', max);
end;
begin
var n, i, j:integer;
writeln('введите размерность квадратной матрицы');
write ('n= ');
readln( n);
writeln('впишите элементы квадратной матрицы');
writeln;
vvod(i,j,n,a);
maxelem(n, a);
end.
Алгоритм нахождения максимального значения в матрице
Постановка задачи
Найти
максимальное значение в двумерном
массиве вещественных чисел.
Математическая модель
Метод решения
Применяем
общий алгоритм поиска экстремального
значения: первое значение берем за
максимальное, перебираем все остальные
значения, среди которых ищем максимальное.
Если очередное значение больше
максимального, то это очередное значение
берем за максимальное.
1)
max:=A1,1
2)
i:=1..n :
j:=1..n
:
если
Ai,j
>
max
max:=
Ai,j
Примечание:
индексы изменяются от 1, так как иначе
пропускаются элементы матрицы. Поэтому
элемент с индексами 1, 1 сравнивается
сам с собой.
Информационная модель
Таблица 18.1.
Информационная
модель
Статус |
Назначение |
Имя |
Тип |
Вход |
исходная |
A |
TMatr |
Выход |
максимальное |
max |
Real |
Промеж. |
индексы |
i,j |
Integer |
Type
Tmatr=array[1..n,1..m]of real;
Const
n=3; m=4;
Программная
модель
program
poisk_max_matr;
const
n=3;
m=4;
type
TMatr=array[1..n,1..m] of real;
var
A:TMatr;
max:Real;
i,j:Integer;
begin
{построчный ввод
матрицы}
for
i:=1 to n do
begin
{ввод
i-ой строки}
for
j:=1 to m do
read(A[i,j]);
{обработка нажатия
клавиши Enter}
readln
end;
{построчный вывод
матрицы}
writeln(‘Исходная
матрица:’);
for
i:=1 to n do
begin
{вывод i-ой строки}
for j:=1 to m
do
write(A[i,j]:10:2); {одно
число занимает 10 позиций,
из них 2
позиции в дробной части}
{переход на новую
строку экрана}
writeln
end;
{реализация метода
решения — поиск максимума}
max:=A[1,1];
for
i:=1 to n do
for
j:=1 to m do
if
A[i,j]>max then max:=A[i,j];
{вывод результата}
writeln(‘Максимальное
значение=’,max:10:2)
end.
18.5. Алгоритмы сортировки
Под
сортировкой понимают упорядочение
данных в массиве по какому-либо признаку.
Обычно числовые массивы сортируются
по возрастанию или убыванию значений,
а литерные и строковые по алфавиту.
Существует огромное количество методов
сортировки. Методы отличаются друг от
друга числом перестановок при выполнении
сортировки, это число принципиально
зависит от размеров исходного массива
и от начального заполнения.
Так
как сортировка массивов используется
в различных задачах, то оформим ее в
виде библиотечных подпрограмм. При
создании библиотеки будем использовать
только 2 метода.
1-ый метод сортировки
“Выбор с перестановкой”
В
этом методе сортируется массив либо по
возрастанию, либо по убыванию значений,
результат сортировки располагается на
месте исходных данных, т.е. исходная
информация портится.
Метод
заключается в следующем:
-
формируются
все элементы массива с первого по
предпоследний; -
для
каждого формируемого места решаются
две задачи:
а)
Ищется экстремальное значение и его
местоположение, начиная с формируемого
места до конца массива. (при сортировке
по возрастанию ищется минимальное
значение, по убыванию – максимальное)
б)
Осуществляется перестановка значения,
расположенного на формируемом месте,
с экстремальным значением.
Проиллюстрируем
метод рисунком 18.10. Исходный массив
сортируется по возрастанию и состоит
из пяти целочисленных элементов: 8, 3, 4,
9, 7
Рис.
18.10. – Сортировка
выбором с перестановкой
Соседние файлы в папке Лекции по Паскалю
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Matrix24. Дана матрица размера M × N. В каждом столбце матрицы найти максимальный элемент.
Решение Pascal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
program Matrix24; var a:array [1..10,1..10] of integer; Max,M, N, i, j:Integer; begin Write(‘N: ‘); Readln(N); Write(‘M: ‘); Readln(M); for i:=1 to M do begin writeln(i,‘: ‘); for j:=1 to N do begin Write(j,‘ : ‘); Read(a[i,j]); end; end; for j:=1 to N do begin writeln(j,‘: ‘); Max:=a[1,j]; for i:=2 to M do begin if a[i,j]>Max then Max:=a[i,j]; end; writeln(‘Масимальный элемент:’,Max); end; end. |
Решение C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
program Matrix24; var a:array [1..10,1..10] of integer; Max,M, N, i, j:Integer; begin Write(‘N: ‘); Readln(N); Write(‘M: ‘); Readln(M); for i:=1 to M do begin writeln(i,‘: ‘); for j:=1 to N do begin Write(j,‘ : ‘); Read(a[i,j]); end; end; for j:=1 to N do begin writeln(j,‘: ‘); Max:=a[1,j]; for i:=2 to M do begin if a[i,j]>Max then Max:=a[i,j]; end; writeln(‘Масимальный элемент:’,Max); end; end. |
IOMatrix.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# include <iostream> # include <fstream> using namespace std; const int RMAX=100; const int CMAX=100; void input(double a[][CMAX],const char* name, int& nr, int& nc) { ifstream in (name); //cout << «Введите количество строк и столбцов матрицы: «; //cin >> nr >> nc; for (int row = 0; row < nr; ++row) { for (int col = 0; col < nc; ++col) { in >> a[row][col]; } } in.close(); } void output(const double a[][CMAX],int nr, int nc) { for (int row = 0; row < nr; ++row) { for (int col = 0; col < nc; ++col) { cout << ‘t’ << a[row][col] << » «; } cout << endl; } } void input(int a[][CMAX],const char* name, int& nr, int& nc) { ifstream in (name); //cout << «Введите количество строк и столбцов матрицы: «; //cin >> nr >> nc; for (int row = 0; row < nr; ++row) { for (int col = 0; col < nc; ++col) { in >> a[row][col]; } } in.close(); } void output(const int a[][CMAX],int nr, int nc) { for (int row = 0; row < nr; ++row) { for (int col = 0; col < nc; ++col) { cout << ‘t’ << a[row][col] << » «; } cout << endl; } } |
Matrix24.txt
1 1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1 |
Оцените решение
Загрузка…