Страница 1 из 2
Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 24 ноя 2007, 15:59
stinger-post
Здравствуйте, уважаемые! Учусь на 1 курсе. Имеются 2 задачи:
1. В каждом столбце заданной матрицы А(m*n) найти наибольший по модулю элемент, а затем вычислить сумму истинных значений этих элементов.
Покажите, пожалуйста, как заставить искаться наибольшие элементы именно по столбцам. Насчет суммы проблемы не вижу, потому как чувствую, что можно истинными значениями забить вспомогательный 1-мерный массив, а сумму его элементов найти легко.
2. Задана матрица А(m*n). Вывести на печать индексы какой-либо седловой точки матрицы или информацию об отсутствии такой точки в матрице. Седловая точка - элемент матрицы, который одновременно является наибольшим в своем столбце и наименьшим в своей строке.
Помогите, пожалуйста, осуществить поиск седловой точки.
Спасибо заранее!
Re: Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 24 ноя 2007, 17:44
Новенький
вот поиск по столбцам (в итоге найдется самый большой эл-т матрицы, дороботать думаю не сложно):
Код: Выделить всё
for i:=1 to m do
for j:=1 to n do
if a[i,j]>max then max:=a[i,j]
а вот я попробовал написать вторую задачу, только у меня не получалось такой матрицы, где была бы такая точка
Код: Выделить всё
uses crt;
const m=4;
n=6;
var matr:array[1..m,1..n]of integer;
i, j, k, max, min, x, y:integer;
begin
clrscr;
randomize;
writeln('Матрица:');
{заполнение матрицы и вывод на экран}
for i:=1 to m do
begin
for j:=1 to n do
begin
matr[i,j]:=random(101)-50;
write(matr[i,j]:4);
end;
writeln;
end;
{поиск седловой точки}
for i:=1 to m do
begin
for j:=1 to n do
if matr[i,j]>max then begin
max:=matr[i,j];
y:=j;
end;
for k:=1 to m do
if matr[k,y]<min then min:=matr[k,y];
if max=min then begin
x:=i;
y:=j;
end;
end;
writeln;
{вывод на экран полученного результата}
if (x<>0)and(y<>0) then writeln('Координаты седловой точки: (',x,',',y,')')
else writeln('Седловых точек нет');
readln;
end.
Re: Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 25 ноя 2007, 07:46
BHy4ok
По поводу седловой точки:
http://forum.developing.ru/showthread.php?t=11962
человек выкладывал программу, возможно - это что что тебе надо.
Re: Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 26 ноя 2007, 05:57
Oleg_Rus
повнимательней посмотрите по всему форуму, из года в год одни и те же задачи задают...
Re: Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 26 ноя 2007, 11:33
Хыиуду
1. В каждом столбце заданной матрицы А(m*n) найти наибольший по модулю элемент
Берем столбец, допустим, с номером 1:
i_max:=1;
for i:=2 to N do
if abs(A[i,1])>abs(A[imax,1]) then imax:=i;
Так же проходим по всем остальным столбцам.
Re: Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 26 ноя 2007, 18:04
stinger-post
Ладно, задачу со столбцом я все-таки решила, выставляю ту часть кода, над которой думала (страшно подумать!) два дня.
Код: Выделить всё
for j:=1 to n do {внешний цикл - столбцы}
for i:=2 to m do {внутренний цикл - строки}
begin
c:=abs(a[1,j]); {присваиваем переменной с значение модуля первого элемента столбца}
If c<abs(a[i,j])
then b[j]:=a[i,j] {вводим вспомогательный 1-мерный массив b и забиваем его требуемыми элементами}
else b[j]:=a[1,j]
end;
Про седло поищу повнимательнее. Всем спасибо за помощь! Самое главное, что я разобралась.

Re: Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 27 ноя 2007, 12:19
Хыиуду
Не совсем понял, что требуется найти в этой задаче, но я не понял, зачем на КАЖДОМ шаге цикла записывать в с значение 1-го элемента j-го столбца? Объясните, что такое истинные значения, может, понятнее будет
Re: Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 28 ноя 2007, 13:09
stinger-post
Допустим, а[2,3]=-5, тогда его модуль равен 5. Если этот
модуль в своем столбце наибольший, то в массиве b третьему элементу присваивается значение -5 - истинное значение элемента а[2,3].
Насчет переменной с... Мне просто так удобнее показалось.

Re: Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 28 ноя 2007, 14:55
Хыиуду
Допустим, у вас в столбце элементы 2, -5, 0, -4, 6, 1.
В b[j] будет записываться (в цикле) 2, -5, 2, -4, 6, 2
Объясните еще раз, что вы хотите получить этим фрагментом кода? Если переписать в b[j] число из j-й строки с максимальным модулем, это делается так:
Код: Выделить всё
{инициализируем массив b нулями}
for j:=1 to n do {внешний цикл - столбцы}
for i:=2{почему 2?} to m do {внутренний цикл - строки}
If abs(b[j])<abs(a[i,j])
then b[j]:=a[i,j]
И все.
Re: Delphi 7 (Pascal) - 2 задачи на матрицы
Добавлено: 12 июн 2010, 12:25
Дашулька1991
Здравствуйте, я студентка 1 курса... вот помоги с матрицей пожалуйста..Если можно напиши подробно после программы что вы брали и делали

надеюсь мне помогут столько классные программисты (в отличие от меня)
Заполнить матрицу 10×10 следующим образом:

Вывести заполненную матрицу на экран компьютера или на принтер. Найти сумму четных элементов матрицы, вывести полученный результат.