Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ поиск седловых точек (в виде процедуры)

Автор: RrgTt_fx32!b 23.12.2006 3:58

Прошу не пинать... Долго рылся в поиске, но чтобы седловая точко находилась с помощью процедуры не нашел.

помогите с решением:
Дана целочисленная прямоугольная матрица, определить:
а) номера строк и столбцов всех седловых точек (оформить в виде процедуры)
b) сумму элементов в тех строках, которые содержат хотябы 1 отрицательный элемент (оформить в виде функции)
желательно как-нибудь попроще

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

program qwerty;
uses crt;
const n=5;
m=5;
type
mass = array [1..n,1..m] of real;
var
a: mass;
s: real;
i,j: integer;
function SumElemVStrokaxKotSoderOtricElem
(n,m: integer): real;
var
s1: real;
i,j: integer;
begin
s1:=0;
for i:=1 to n do begin
for j:=1 to m do begin
if a[i,j]<0 then
for i:=1 to n do
s1:=s1+a[i,j];
SumElemVStrokaxKotSoderOtricElem:=s1;
end; end; end;

begin
clrscr;
writeln ('vvedite chisla');
for i:=1 to n do begin
for j:=1 to m do
readln(a[i,j]);
end;
s:=SumElemVStrokaxKotSoderOtricElem(n,m);
writeln ('s=',s:2:2);
readln;
end.

Автор: мисс_граффити 23.12.2006 4:28

могу предложить такие варианты:
1) подпрограмма вычисляет только сумму строки, номер которой ей передается как параметр. все остальное делать в главной программе в цикле по строкам
2) сделать вместо функции процедуру и засунуть вывод внутрь нее
3) возвращать массив с суммами строк, содержащих отрицательные элементы.

Автор: RrgTt_fx32!b 23.12.2006 19:51

мисс_граффити: да фиг с ней, со второй задачей, хоть что-то считает.
Ты седловые точки можешь сделать в виде процедуры? В понедельник сдавать, а у меня одна эта задача осталась.

Автор: мисс_граффити 23.12.2006 21:50

Найди просто решение (много раз делалось) и оформи в виде процедуры.
В чем проблема-то?

Автор: RrgTt_fx32!b 24.12.2006 2:10

Цитата
Найди просто решение (много раз делалось) и оформи в виде процедуры.
В чем проблема-то?

если б не было проблемы стал бы я просить решение???
не умею я процедуры составлять. Функция просто была подобная, а процедуры нету.
Может сделаешь процедуру знаешь ведь как? Пожалуйста!

Автор: мисс_граффити 24.12.2006 4:09

в общем случае функция переделывается в процедуру очень просто.
например:

function kub (x:integer) : integer;
begin
kub:=x*x*x;
end;


procedure kub(x:integer; var kubik:integer);
begin
kubik:=x*x*x;
end;

то есть в первом случае возврат результата идет через имя функции, а во втором - через специально для этого предназначенную переменную.

Автор: RrgTt_fx32!b 24.12.2006 22:30

ну хоть кто-нибудь может решить задачу про седловые точки с помощью процедуры?

Автор: мисс_граффити 24.12.2006 23:13

ты какой-то нелогичный: сначала полдня достаешь меня в ЛС, а потом даже не соизволиваешь (соизволяешь? как правильно?) посмотреть, что я ответила.

Автор: RrgTt_fx32!b 25.12.2006 4:39

Я посмотрел. Спасибо! Только когда я это писал ты мне еще не ответила smile.gif