Форум программистов, компьютерный форум, киберфорум
Наши страницы
Pascal ABC
Войти
Регистрация
Восстановить пароль
 
Qwertyqwertyqwe
0 / 0 / 0
Регистрация: 07.12.2014
Сообщений: 12
#1

Сократить код

10.12.2015, 07:56. Просмотров 301. Ответов 2
Метки нет (Все метки)

Необходимо чтобы после ввода матрицы, программа находила минимакс по строкам и максимин по столбцам, прошу помочь в максимальном сокращении кода, если это возможно. Использование процедур, функций или вообще без них не критично.

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Program less;
const
  nmax=20;
type
  tAr1=array[1..nmax,1..nmax] of integer;
  tAr2=array[1..nmax] of integer;
 
procedure minim(a: tAr1; var b: tAr2; n,m: byte);
var i,j,imin: byte;
begin
  for j:=1 to n do
  begin
    imin:=1;
    for i:=2 to n do
      if a[i,j]>a[imin,j] then imin:=i;
    b[j]:=a[imin,j];
  end;
  writeln('Максимальные элементы по столбцам:');
  for j:=1 to n do
    writeln(j,'. ',b[j]);
end;
 
procedure maxim(b: tAr2; n: byte);
var j: byte;
    min: integer;
begin
  min:=b[1];
  for j:=2 to n do
    if b[j]<min then min:=b[j];
  writeln('Минимальный среди них = ',min);
end;
 
procedure minim1(a: tAr1; var b: tAr2; n,m: byte);
var i,j,imin: byte;
begin
  for i:=1 to n do
  begin
    imin:=1;
    for i:=2 to n do
      if a[i,j]<a[i,imin] then imin:=j;
    b[i]:=a[i,imin];
  end;
  writeln('Минимальные элементы по строкам:');
  for i:=1 to n do
    writeln(i,'. ',b[i]);
end;
 
procedure maxim1(b: tAr2; n: byte);
var i: byte;
    max: integer;
begin
  max:=b[1];
  for i:=2 to n do
    if b[i]>max then max:=b[i];
  writeln('Максимальный среди них = ',max);
end;
var
  a: tAr1;
  b: tAr2;
  n,m,i,j: byte;
begin
  write('Введите размер матрицы: n = ');
  readln(n);
  write('Введите размер матрицы: m = ');
  readln(m);
  writeln('Исходный массив:');
  for i:=1 to n do
  for j:=1 to m do
  begin
    for j:=1 to n do
    begin
      write('a[',i,',',j,']:=');
     readln(a[i,j])
    end;
  end;
  writeln;
  minim(a,b,n,m);
  maxim(b,n);
  minim1(a,b,n,m);
  maxim1(b,n);
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2015, 07:56
Ответы с готовыми решениями:

Можно ли сократить код?
Program Pr1; var k,j,n,f,m:integer; g,x,f1,r:real; begin...

Сократить дробь
С клавиатуры вводятся два натуральных числа - числитель и знаменатель дроби....

Как сократить ветвления?
Я помню, что эти ветвления можно сократить, чтобы меньше места занимали. Типа...

Сократить обыкновенную дробь
Друзья, напишите пожалуйста программу pascal. Вводится числитель и знаменатель...

Сократить до инициалов имя и отчество
С клавиатуры вводят строку: Фамилия Имя Отчество используя функции и...

2
Hadros
36 / 36 / 17
Регистрация: 12.04.2012
Сообщений: 160
10.12.2015, 10:19 #2
саму minim, вывод 'Максимальные элементы по столбцам:' и maxim1 можно объединить в один цикл по J
0
Puporev
Модератор
54382 / 41964 / 28987
Регистрация: 18.05.2008
Сообщений: 98,843
10.12.2015, 11:59 #3
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const
  nmax=20;
type
  tAr=array[1..nmax,1..nmax] of integer;
procedure minimax(a: tAr;n,m: byte; var mnmx:integer);
var i,j,imax: byte;
begin
mnmx:=maxint;
for i:=1 to n do
 begin
  imax:=1;
  for j:=2 to m do
  if a[i,j]>a[i,imax] then imax:=j;
  writeln('Максимальный элемент в строке ',i,'=',a[i,imax]);
  if a[i,imax]<mnmx then mnmx:=a[i,imax];
 end;
writeln('Минимльный из максимальных элементов строк=',mnmx);
end;
 
procedure maximin(a: tAr; n,m: byte; var mxmn:integer);
var i,j,jmin: byte;
begin
mxmn:=-maxint-1;
for j:=1 to m do
 begin
  jmin:=1;
  for i:=2 to n do
  if a[i,j]<a[jmin,j] then jmin:=i;
  writeln('Минимальный элемент в столбце ',j,'=',a[jmin,j]);
  if a[jmin,j]>mxmn then mxmn:=a[jmin,j];
 end;
writeln('Максимльный из минимальных элементов столбцов=',mxmn);
end;
var a: tAr;
    n,m,i,j: byte;
    mnmx,mxmn:integer;
begin
repeat
writeln('Введите размеры матрицы n,m');
readln(n,m);
until(n in [2..nmax])and(m in [2..nmax]);
for i:=1 to n do
for j:=1 to m do
 begin
  write('a[',i,',',j,']:=');
  readln(a[i,j])
 end;
writeln('Исходный массив:');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
 end;
minimax(a,n,m,mnmx);
maximin(a,n,m,mxmn);
end.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2015, 11:59

Определить сократима ли дробь, если ДА, то сократить.
Дана дробь заданная числителем и знаменателем. Описать дробь с помощью записи....

Нужно сократить программу вычисления определителя матрицы
Помогите сократить программу uses crt; const n=3; var A:array of integer;...

Сократить имя до первой буквы и отсортировать список по алфавиту
Сократить имя до первой буквы и отсортировать список по алфавиту. 1)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru