Другие языки программирования и технологии

Помогите сделать задания по програмированию(двумерные массивы)Turbo Pascal

Программирование в Turbo Pascal1 Найти столбец содержащий mах и min элементы целочисленного массива и поменять местами столбцы2 Найти сумму элементов четных, лежащих выше главной диагонали и сумму элементов четных, лежащих ниже главной диагонали.Заранее спасибо!
Доброго времени суток.

Пусть n - число строк, а m - столбцов. Тогда

MinN := MaxInt; {заведомо большое число}
MaxN := -MaxInt; {заведомо малое число}
MinC := 0; {столбец с минимальным числом}
MaxC := 0;{столбец с максимальным числом}
for i:=1 to n do {цикл по строкам}
for j:=1 to m do begin {цикл по столбцам}
if MinN > A[i,j] then begin
MinN := A[i,j]; {запоминаем минимальный элемент}
MinC := j; {и его столбец}
end;
if MaxN < A[i,j] then begin
MaxN := A[j]; {запоминаем максимальный элемент}
MaxC := j; {и его столбец}
end;
end;

Теперь в MinC и MaxC номера столбцов с минимальным и максимальным элементами. Если эти номера равны, то переставлять нечего. А вот если нет, то

for i:=1 to n do begin {цикл по строкам}
Buf := A[i, MinC]; {элемент в буфер}
A[i, MinC] := A[i, MaxC]; {новое значение}
A[i, MaxC] := Buf; {восстанавливаем из буфера}
end;

Все, столбцы переставлены.

С главной диагональю тоже просто. Ее элементы удовлетворяют условию i+j = 2*i Отсюда

for i:=1 to n do
for j:=1 to m do begin
if (i+j > 2*i) and (A[i,j] mod 2 = 0) then S1 := S1 + A[i,j]; {сумма выше главной диагонали}
if (i+j < 2*i) and (A[i,j] mod 2 = 0) then S2 := S2 + A[i,j]; {сумма ниже главной диагонали}
end;

Объявление переменных и остальное оформление, сами пожалуйста.

Удачи!
Bayram Rahmanow
Bayram Rahmanow
59 612
Лучший ответ
1: ищем столбецы с макс и мин эл-ми
var
tmp, mas[5][5], i, j, max, min, i_max, i_min : integer;
begin
max := mas[0][0];
min := mas[0][0];
for i:= 1 to 5 do {для наглядности везде с нуля может тут нет :) }{столбцы}
for j:= 1 to 5 do {для наглядности везде с нуля может тут нет :) }{строки}
begin
if max < mas[j] then
begin
max = mas[j];
i_max=i;{сохраняем номер строки с макс элементом}
end;
if min > mas[j] then
begin
min = mas[j];
i_min=i;{сохраняем номер строки с минимальным эл-ом}
end;
end;
{меняем местами столбцы}
for i := 1 to 5 do
begin
tmp := mas [i_max]; {сохраняем максимальное число}
mas [i_max] := mas [i_min];{заносим минимальное в макс}
mas [i_min] := tmp;{в мин заносим макс-ое}
end;
end;
-----------------------------------------------------------------------------------------------------
Обрати внимание что нумерация эл-ов массива тут с 1цы может быть иначе, везде с 0ля, но этож pascal:)