Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 13

Матрица, нахождение индекса мах элемента через процедуру

22.11.2013, 20:23. Показов 1419. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа и дамы, здравствуйте.
Итак, условие задачи: Разработать подпрограмму для обработки матрицы А(m,n), m,n<=10.
Подпрограмма должна обеспечивать запись на место максимального
элемента всей матрицы суммы отрицательных элементов "К"-го столбца
этой матрицы. Использовать подпрограмму для обработки двух матриц
В(3,4) и С(4,4).
Вот текст заготовки. Есть вопросы. Задам в конце.
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
*********
uses crt;
const n=3; m=3;
type  mas=array[1..m,1..n]of integer;
var i,j,max,imax,jmax:integer; a:mas;
 
 
procedure vvodobrabotka(i,j:integer;a:mas);
begin
writeln('Вводи элементы массива');
for i:=1 to m do
for j:=1 to n do
read (a[i,j]);
for i:=1 to m do
begin
for j:=1 to n do
begin
write(' ',a[i,j],' ');
end;
writeln;
end;
max:=a[1,1];
for i:=1 to m do
begin
for j:=1 to n do
if a[i,j]>max then  max:=a[i,j];
writeln;
end;
writeln('Максимальный элемент матрицы: ',max);
end;
 
procedure indeks (i,j,max,imax,jmax:integer;a:mas);     //индекс максимального элемента
begin
max:=a[1,1];
for i:=1 to m do
begin
for j:=1 to n do if a[i,j]>max then  begin max:=a[i,j]; imax:=i;jmax:=j;  end;
end;
writeln(imax,jmax);
end;
 
 
 
 
BEGIN
vvodobrabotka(i,j,a);
indeks(i,j,max,imax,jmax,a);
END.
*********
Итак, вопросы. Пытался я разделить процедуру vvodobrabotka на две процедуры: ввода(и вывода на экран) и обработки. Но в этом случае максимальный элемент у меня не находился, при прогоне проги он был нулём. А, если объединить в одну подпрограмму, то максимум ищется ( как в тексте проги, что я скинул ). Как сделать так, чтобы процедуры связались между собой( Допустим, в первой процедуре я ввожу матрицу, а во второй я нахожу максимум). Та же фигня с индексом макс. элемента, он не ищется у меня сейчас. Разберёмся с индексами-разберёмся и с обработкой!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2013, 20:23
Ответы с готовыми решениями:

Нахождение индекса элемента массива на c++
Помогите пожалуйста написать программу с таким заданием: В файле задан массив, состоящий из n неотрицательных чисел. Найти в нём индекс...

Нахождение индекса элемента массива контролов
Доброго времени суток! В своей программе я создаю массив picturebox-ов которые в дальнейшем добавляются на форму , но мне нужно реализовать...

Нахождение максимального элемента массива и его индекса
var Form1: TForm1; massiv: array of integer; n, i:integer; implementation {$R *.dfm} procedure...

5
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
22.11.2013, 21:05
Ну создайте процедуру ввода, вывода и расчета. 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
uses crt;
const n=10; m=10;
type  mas = array[1..m,1..n]of integer;
var b, c : mas;
 
procedure vvod(var a : mas; size1, size2 : integer);
var i, j : integer;
begin
  writeln('Вводи элементы массива');
  for i:=1 to size1 do
    for j:=1 to size2 do
      read (a[i,j])
end;
 
procedure vyvod(a : mas; size1, size2 : integer);
var i, j : integer;
begin
  writeln('матрица:');
  for i := 1 to size1 do
  begin
    for j := 1 to size2 do
      write(a[i,j]:6);
    writeln
  end  
end;
 
procedure obrabotka(a : mas; size1, size2 : integer{; var res : integer});
var i, j, max : integer;
begin
  max := -32768;
  for i := 1 to size1 do
    for j := 1 to size2 do
      if a[i,j] >= max then max := a[i,j];
  writeln('Максимальный элемент матрицы: ',max);
  {res := max} {на случай если надо передать такой параметр в программу} 
end;  
 
BEGIN
  {ввод В(3,4)}
  vvod(b, 3, 4);  
  {ввод C(4,4)}
  vvod(c, 4, 4);
  {вывод В(3,4)}
  vyvod(b, 3, 4);
  {вывод C(4,4)}
  vyvod(c, 4, 4);
  obrabotka(b, 3, 4);
  obrabotka(c, 4, 4);
{...............}
END.
Добавлено через 1 минуту
+ все-таки нужно разграничивать внешние и внутренние переменные, формальные и фактические параметры...
1
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 13
27.11.2013, 18:50  [ТС]
ildwine, можешь пояснить, что значит "к"-тый столбец? Он задается вручную мной? ( то есть я сам должен выбрать тот столбец, где суммирую отрицательные элементы,а потом записываю на место макс. элемента?)
0
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
27.11.2013, 18:55
Ну раз не задан в задании, то да... Вам надо написать еще одну процедуру или встроить эти действия в процедуру obrabotka.

Добавлено через 56 секунд
Лучше в отдельную процедуру.
0
0 / 0 / 0
Регистрация: 22.11.2013
Сообщений: 13
27.11.2013, 21:01  [ТС]
ildwine,
Итак, у меня вылазит ошибка:нельзя преобразовывать выражение типа array[1..10,1..10] of integer к типу integer.
Вот текст проги:
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
uses crt;
const n=10; m=10;
type  mas = array[1..m,1..n]of integer;
var b, c : mas;  k:integer;
 
 
procedure vvod(var a : mas; k1, k2 : integer);
var i, j : integer;
begin
  writeln('Ââîäè ýëåìåíòû ìàññèâà');
  for i:=1 to k1 do
    for j:=1 to k2 do
      read (a[i,j]);
end;
 
procedure vyvod(a : mas; k1, k2 : integer);
var i, j : integer;
begin
  writeln('ìàòðèöà:');
  for i := 1 to k1 do
  begin
    for j := 1 to k2 do
      write(a[i,j]:6);
    writeln
  end
end;
 
procedure obrabotka(k, k1, k2 : integer; var a:mas);
var i, j, S,max: integer;
begin
max := a[1,1];
for i := 1 to k1 do
for j := 1 to k2 do
if a[i,j] >= max then max := a[i,j];
writeln('Maximum ',max);
S:=0;
for i:=1 to k1 do
if a[i,k]<0 then S:=S+a[i,k];
max:=S;
 
end;
 
BEGIN
 
  vvod(b, 3, 4);
  vvod(c, 4, 4);
  writeln(' B ');
  vyvod(b, 3, 4);
  obrabotka(k,b, 3, 4);
  writeln(' C ');
  vyvod(c, 4, 4);
  obrabotka(k,c, 4, 4);
 
 
 
 
END.
0
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
27.11.2013, 21:11
Соблюдайте порядок параметров при описании и вызове подпрограммы.

procedure obrabotka(k, k1, k2 : integer; var a:mas);

У вас массив в описании 4-ый, а при вызове второй:

obrabotka(k,c, 4, 4);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2013, 21:11
Помогаю со студенческими работами здесь

Нахождение максимума, минимума и индекса минимального элемента
Вот программа program testtt implicit none integer :: a(8,8), b(8,8), ind(2), i, j, minimum, maximum logical :: l data...

Нахождение минимального элемента массива и его индекса
5. Помогите пожалуйста, составить программу вычисления в массиве минимального элемента и его номера.

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

Не работает нахождение минимального элемента массива и его индекса
Найти минимальный член массива и его индекс. min = a; imin = 0; for (i = 0; i &gt;= n; i++) if (min &lt; a) min = min; ...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru