0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 16
1

Подпрограмма поиска минимума элементов матрицы и его адреса

14.04.2015, 21:30. Показов 2179. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Буду признателен если напишите програмку,надо до ночи 15 апреля,совсем уж туго у меня с пониманием pascal'я
Написать подпрограмму поиска минимума элементов матрицы и его адреса. Для проверки подпрограммы создать драйвер, в котором выполнить ввод матрицы; заменить минимумом элементы той строки, на которой он находится; вывод матрицы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2015, 21:30
Ответы с готовыми решениями:

Написать подпрограмму поиска минимума элементов матрицы и его адреса
Написать подпрограмму поиска минимума элементов матрицы и его адреса. Для проверки подпрограммы...

Подпрограмма поиска минимального и его адреса среди элементов массива
Написать подпрограмму поиска минимального и его адреса среди элементов массива. Для проверки...

Подпрограмма: поиск минимального элемента массива и его адреса
Помогите пожалуйста Написать подпрограмму поиска минимального и его адреса среди элементов...

1. Ввести символьный массив. Найти адреса всех парных его элементов. 2. Вывести адреса элементов массива 4 на 4, находящ
Помогите пж... 1. Ввести символьный массив. Найти адреса всех парных его элементов. 2. Вывести...

5
Эксперт Pascal/Delphi
6806 / 4565 / 4817
Регистрация: 05.06.2014
Сообщений: 22,438
14.04.2015, 21:31 2
Цитата Сообщение от Mixali4 Посмотреть сообщение
Для проверки подпрограммы создать драйвер
Что создать???
0
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 16
14.04.2015, 21:40  [ТС] 3
Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
Что создать???
Ну под "драйвером" имеется ввиду тело "материнской" программы которое бы содержало данную подпрограмму и функционировало с ней выполняя в конкретном случае следующее...
При запуске программы (драйвера) мы вводим матрицу (двумерный массив) затем программа запускает нашу подпрограмму выполняется обработка данных из "драйвера" и выводятся в переменную результат подпрограммы а через эту переменную уже заменяется строка на значения полученные в ходе обработки.
0
Модератор
9593 / 4912 / 3245
Регистрация: 17.08.2012
Сообщений: 15,346
16.04.2015, 00:05 4
Цитата Сообщение от Mixali4 Посмотреть сообщение
под "драйвером" имеется ввиду
Mixali4, под драйвером в программировании всегда имелась ввиду резидентная программа для управления каким-либо физическим или виртуальным устройством. То, что Вы называете драйвером, всегда называлось вызывающей программой. Допускаю, что в Вашем учебном заведении термин "драйвер" используется в указанном Вами контексте. В этом случае в Вашем учебном заведении Вам придётся обзывать вызывающую программу драйвером, для других же мест рекомендую Вам использовать термин "вызывающая программа".

В качестве подпрограммы в данном случае логично использовать процедуру, а не функцию, так как возвращаемых параметров более одного.
К сожалению, в турбо паскале в подпрограмму передать матрицу напрямую без танцев с бубном нереально. Не напрямую - возможно. Два наиболее часто используемых способа: использовать массив в подпрограмме как глобальную переменную, или передавать в подпрограмму переменную пользовательского типа.

Массив как глобальная переменная:
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
const max_ind = 20;
var a: array [1..max_ind, 1..max_ind] of integer;
    i, j, mi, mj, min, m, n: integer;
 
{подпрограмма по заданию}
procedure s_min(var x, y, mi: integer);
var i, j: integer;
begin
  mi := a[1, 1];
  x := 1;
  y := 1;
  for i := 1 to n do
    for j := 1 to m do
      if a[i, j] < mi
        then begin
          mi := a[i, j];
          x := i;
          y := j
        end
end;
 
{процедура печати матрицы}
procedure prnt;
var i, j: integer;
begin
  for i := 1 to n do
    begin
      for j := 1 to m do write(a[i, j]:4);
      writeln
    end
end;
 
{вызывающая программа}
begin
  {ввод размеров матрицы}
  repeat
    writeln('Enter matrix size:');
    write('vertical = ');
    readln(n);
    write('horizontal = ');
    readln(m);
    if not ((m in [1..max_ind]) and (n in [1..max_ind]))
      then writeln('Matrix size(s) out of range [1..', max_ind, '], reenter.')
  until (m in [1..max_ind]) and (n in [1..max_ind]);
  {генерация матрицы}
  randomize;
  for i := 1 to n do for j := 1 to m do a[i, j] := -99 + random(199);
  {печать матрицы}
  writeln('Source matrix A:');
  prnt;
  {вызов подпрограммы поиска минимума}
  s_min(mi, mj, min);
  {печатаем минимум}
  writeln('Min elevent is A[', mi, ', ', mj, '] = ', min);
  {замена}
  for j := 1 to m do a[mi, j] := min;
  {печать результата}
  writeln('Result matrix A:');
  prnt;
  readln
end.
Массив объявлен пользовательским типом:
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
const max_ind = 20;
type vec = array [1..max_ind] of integer;
type mat = array [1..max_ind] of vec;
 
{подпрограмма по заданию}
procedure s_min(var g: mat; p, q: integer; var x, y, mi: integer);
var i, j: integer;
begin
  mi := g[1, 1];
  x := 1;
  y := 1;
  for i := 1 to p do
    for j := 1 to q do
      if g[i, j] < mi
        then begin
          mi := g[i, j];
          x := i;
          y := j
        end
end;
 
{процедура печати матрицы}
procedure prnt(var g: mat; p, q: integer);
var i, j: integer;
begin
  for i := 1 to p do
    begin
      for j := 1 to q do write(g[i, j]:4);
      writeln
    end
end;
 
var a: mat;
    i, j, mi, mj, min, m, n: integer;
 
{вызывающая программа}
begin
  {ввод размеров матрицы}
  repeat
    writeln('Enter matrix size:');
    write('vertical = ');
    readln(n);
    write('horizontal = ');
    readln(m);
    if not ((m in [1..max_ind]) and (n in [1..max_ind]))
      then writeln('Matrix size(s) out of range [1..', max_ind, '], reenter.')
  until (m in [1..max_ind]) and (n in [1..max_ind]);
  {генерация матрицы}
  randomize;
  for i := 1 to n do for j := 1 to m do a[i, j] := -99 + random(199);
  {печать матрицы}
  writeln('Source matrix A:');
  prnt(a, n, m);
  {вызов подпрограммы поиска минимума}
  s_min(a, n, m, mi, mj, min);
  {печатаем минимум}
  writeln('Min elevent is A[', mi, ', ', mj, '] = ', min);
  {замена}
  for j := 1 to m do a[mi, j] := min;
  {печать результата}
  writeln('Result matrix A:');
  prnt(a, n, m);
  readln
end.
Если требуется ручной ввод, генерацию матрицы заменить на:
Pascal
1
2
3
4
5
6
7
8
  {ввод матрицы}
  writeln('Enter elements of matrix A:');
  for i := 1 to n do
    for j := 1 to m do
      begin
        write('A[', i, ', ', j, '] = ');
        readln(a[i, j])
      end;
и подправить печать:
Pascal
1
2
3
4
5
6
7
8
9
10
{процедура печати матрицы}
procedure prnt(var g: mat; p, q: integer);
var i, j: integer;
begin
  for i := 1 to p do
    begin
      for j := 1 to q do write(g[i, j], ' ');
      writeln
    end
end;
1
0 / 0 / 0
Регистрация: 30.11.2014
Сообщений: 16
16.04.2015, 00:09  [ТС] 5
Спасибо!

Я написал вот так)
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
program Primer;
Type mas=array[1..10,1..10] of integer;
Var
n,m,i,j,S,min,imin,jmin:integer;
a:mas;
Procedure Summa(n1,m1:integer;Var a1:mas; Var min1,imin1,jmin1:integer);
Var i1,j1:integer;
begin min1:=9999;
for i1:=1 to n1 do
for j1:=1 to m1 do
if a[i1,j1]<min1 then
begin
min1:=a[i1,j1];
imin1:=i1;
jmin1:=j1;
end;
end;
begin {Primer}
write('Ввести число строк ');
readln(n);
write('Ввести число столбцов ');
readln(m);
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',',j,']');
readln(a[i,j]);
end;
writeln;
writeln;
Summa(n,m,a,min,imin,jmin);{обращение к подпрограмме сумма}
for i:=1 to n do
for j:=1 to m do
a[imin,j]:=min;
for i:=1 to n do
for j:=1 to m do
writeln('a[',i,',',j,']',a[i,j]);
end.
0
Модератор
9593 / 4912 / 3245
Регистрация: 17.08.2012
Сообщений: 15,346
16.04.2015, 00:36 6
Есть ошибочки и недочёты.
Pascal
6
Procedure Summa(n1,m1:integer;Var a1:mas; Var min1,imin1,jmin1:integer);
Pascal
11
12
13
if a[i1,j1]<min1 then
begin
min1:=a[i1,j1];
Параметр процедуры - "a1", а Вы вместо него используете глобальную переменную "a". Чтобы не было таких ляпов, глобальные переменные, если они не используются в подпрограммах, следует описывать после подпрограмм.

Ещё гляну, что не так.

Добавлено через 4 минуты
Pascal
8
begin min1:=9999;
то есть, все элементы, большие 9999, не рассматриваются. Скажите, что мне мешает, к примеру, ввести все элементы массива равные, например, 10000? И чему тогда будут равны imin1 и jmin1? Сделайте, как у меня. Одного Вашего табу для обеспечения правильности ввода недостаточно.

Добавлено через 5 минут
Pascal
35
36
37
for i:=1 to n do
for j:=1 to m do
writeln('a[',i,',',j,']',a[i,j]);
И зачем Вы так нехорошо с двумерным массивом? Чего ж в столбик-то его? Ну ладно, это дело вкуса.

Добавлено через 2 минуты
Pascal
19
20
21
22
write('Ввести число строк ');
readln(n);
write('Ввести число столбцов ');
readln(m);
Ну и... То же самое... Что мешает мне ввести, например, 20, обеспечив Вашей программе ошибку в виде вылета за границы индексов? Я Вашего табу не боюсь.

Добавлено через 4 минуты

Не по теме:

Да, и заключайте Ваш код в теги, для этого нужно нажать слово "PASCAL" в шапке редактора сообщений, и вставить код между тегами, либо выделить код и нажать упомянутое слово. Ну и, формат кода у Вас "излишне аскетичный"... Код плохо читается, не разбери поймёшь, что где...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2015, 00:36
Помогаю со студенческими работами здесь

Разработать алгоритм поиска 3-его минимума и 4-ого максимума в массиве
Разработать и реализовать алгоритм, который будет искать 3-й минимум и 4-й максимум в массиве,...

помогите сделать: подпрограмма считывает размер матрицы из первого файла и передает его во второй?
не могли бы вы подделиться ссылкой на пример,где подпрограмма считывает размер матрицы из первого...

Найти в каждой строке матрицы среднее арифметическое и поставить его на место минимума строки
Матрица вводится с клавиатуры. Нужно найти в каждой строке матрицы среднее арифметическое и...

Подпрограмма. Сумма элементов главной диагонали матрицы
У меня есть квадратная матрица и нужно разработать подпрограмму и вызвать ее из основной...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru