Как найти максимальное число в матрице паскаль

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
print
next i
for j=0 to M-1
print "-----";
next j
print
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
print

Помогите разобраться. Изначально ввел и вывел матрицу через процедуру, а дальше хочу обратиться к этой матрице(а не вводить новую) и обрабатывать ее. Выдает максимум как 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:=A
1,1

2)

i:=1..n :

j:=1..n
:

если
A
i,j
>
max
max:=
A
i,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-ый метод сортировки
“Выбор с перестановкой”

В
этом методе сортируется массив либо по
возрастанию, либо по убыванию значений,
результат сортировки располагается на
месте исходных данных, т.е. исходная
информация портится
.

Метод
заключается в следующем:

  1. формируются
    все элементы массива с первого по
    предпоследний;

  2. для
    каждого формируемого места решаются
    две задачи:

а)
Ищется экстремальное значение и его
местоположение, начиная с формируемого
места до конца массива. (при сортировке
по возрастанию ищется минимальное
значение, по убыванию – максимальное)

б)
Осуществляется перестановка значения,
расположенного на формируемом месте,
с экстремальным значением.

Проиллюстрируем
метод рисунком 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

Оцените решение

Загрузка…

Понравилась статья? Поделить с друзьями:
  • Как найти ответ на вопрос по физике
  • Как найти файл для выгрузки
  • Ноги колесом как исправить у девушки упражнениями
  • Как найти начало диалога вк
  • Кифотическая осанка как исправить у взрослого