Консультация № 132115
14.04.2008, 10:41
0.00 руб.
0 5 2
В двумерном массиве определить столбец(столбцы), содержащие наибольшее значение.

Обсуждение

Неизвестный
14.04.2008, 10:57
общий
это ответ
Здравствуйте, Водянникова Екатерина Валерьевна!
Программа в приложении (сначала ищется максимальное во всем массиве, затем массив перебирается по столбцам и выводятся номера нужных столбцов).

Приложение:
program Project2;var a: array[1..100, 1..100] of integer; n, m, i, j, max: integer;begin writeln(‘Vvedite n‘); readln(n); writeln(‘Vvedite m‘); readln(m); {матрица n*m} max := a[1, 1]; writeln(‘Vvedite massiv‘); for i := 1 to n do for j := 1 to m do readln(a[i, j]); writeln(‘Vvedennii massiv‘); for i := 1 to n do begin for j := 1 to m do write(a[i, j], ‘ ‘); writeln; end; for i := 1 to n do for j := 1 to m do if a[i, j] > max then max := a[i, j]; writeln(‘max=‘, max); writeln(‘Stolbtsi, sodershachie max:‘); for j := 1 to m do for i := 1 to n do if a[i, j] = max then writeln(j); readln;end.
Неизвестный
14.04.2008, 11:07
общий
это ответ
Здравствуйте, Водянникова Екатерина Валерьевна!
Написал Вам задачку. Работает правильно, но с одной маленькой странностью: если максимальный элемент находится в нескольких столбцах, то номера столбцов выводятся не по порядку. Не знаю почему. А так - всё в порядке. Код в приложении.

Приложение:
const n=3; m=4;var ms: array [1..n, 1..m] of integer; i,j,max,index: integer;begin randomize; max:=-1; for i:=1 to n do begin writeln; for j:=1 to m do begin ms[i,j]:=random(10); if ms[i,j]>max then max := ms[i,j]; write(ms[i,j]:5); end; end; index:=0; writeln; write(‘Max value indexes are ‘); for i:=1 to n do for j:=1 to m do if (ms[i,j]=max) and (j<>index) then begin write(j:5); index:=j; end; readln;end.
давно
Старший Модератор
31795
6196
14.04.2008, 11:15
общий
Не по порядку выводятся только из-за не правильной огранизации циклов, первым должен цикл по столбцам <b>( J )</b>
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
14.04.2008, 11:29
общий
2 Константин Николаевич Да, я уже понял. Спасибо. for j:=1 to m do for i:=1 to n do if (ms[i,j]=max) and (j<>index) then begin write(j:5); index:=j; end;
Неизвестный
14.04.2008, 11:34
общий
2 CouplerА вы тестировали свой код? и вводили значения матрицы, размерностью 100*100?? о.О
Форма ответа