Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2009, 07:11   #11
MyaSnIKs
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

Код:


Function Aga3(index:integer;var G:tm):boolean;
var
i,j:integer;
begin result:=false;
for i:=0 to 100 do
 if G[index,i]<0 then begin 
  result:=true;
  exit;
 end;
end;
объясни по подробней как эта функция работает
MyaSnIKs вне форума Ответить с цитированием
Старый 29.04.2009, 08:16   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Оч. просто: В цикле прохходит каждый элемент матрицы TM
Как только очередной элемент меньше 0, функция останавливается, возвращая TRUE таким образом сигнализируя, что отрицательный найден в матрице. Если не одного не найдет - вернет FALSE
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2009, 10:32   #13
MyaSnIKs
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

в этом цикле "индекс"=номеру строки, так?
я в место неё пропишу переменную "м"(по условию которая даётся)
и сделаю ещё одну функция с такой же переменной "к",

и потом если первая функция Aga3=True а вторая Aga31=False то у меня будет расчитывать по одной формуле, в противном случае по другой так?
(спрашиваю исходя из условия: Если в строке с номером m матрицы С есть отрицательные элементы, а в строке с номером k матрицы Т есть положительные элементы, то найти А = -С+ Т*С, иначе найти В = -Т + CТ.)

Как мне сделать чтобы одна функция была для одной матрица, а другая для другой?

Код:
Function Aga3(index:integer;var G:tm):boolean;
var
i,j,n,m:integer;
begin result:=false;
n:=strtoint(form1.edit4.Text);
m:=strtoint(form1.edit1.Text);
for i:=0 to n-1 do
 if G[m,i]<0 then begin
  result:=true;
  exit;
 end;
end;

Function Aga31(index:integer;var G:tm):boolean;
var
i,j,n,k:integer;
begin result:=false;
n:=strtoint(form1.edit4.Text);
k:=strtoint(form1.edit2.Text);
for i:=0 to n-1 do
 if G[k,i]<0 then begin
  result:=true;
  exit;
 end;
end;

Последний раз редактировалось Stilet; 29.04.2009 в 11:17.
MyaSnIKs вне форума Ответить с цитированием
Старый 29.04.2009, 11:19   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в этом цикле "индекс"=номеру строки, так?
Ну да...
Цитата:
Как мне сделать чтобы одна функция была для одной матрица, а другая для другой?
Зачем?, матрицы то у тебя одинаковые...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2009, 11:49   #15
MyaSnIKs
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

у меня две матрицы, одна создаётся по закону, другая рандомно
и надо чтобы в рандомной он проверял строку на отрицательные, а в той что создаётся по закону строку на положительные
MyaSnIKs вне форума Ответить с цитированием
Старый 29.04.2009, 12:01   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не парься сделай универсальную функу:
Код:
Function Aga3(index:integer;var G:tm;Plus:boolean):boolean;
var
i,j,n,m:integer;
begin result:=false;
n:=strtoint(form1.edit4.Text);
m:=strtoint(form1.edit1.Text);
for i:=0 to n-1 do
if Plus then begin
 if G[m,i]>0 then begin  result:=true;  exit; end
end else begin
 if G[m,i]<0 then begin  result:=true;  exit; end
end;
end;
Проверять на отрицательные: Aga3(1,А,FALSE);
Проверять на положительные Aga3(1,B,TRUE);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.04.2009, 12:07   #17
MyaSnIKs
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

хммм...у меня m и k по условию разные, надо чтобы он проверял в одной матрице в строке с номером К, а в другой матрице в строке с номером м
MyaSnIKs вне форума Ответить с цитированием
Старый 30.04.2009, 01:44   #18
MyaSnIKs
Пользователь
 
Регистрация: 23.02.2009
Сообщений: 28
По умолчанию

Проверьте пожалуйста, я правильно всё сделал?
Исходя из условия:
Если в строке с номером m матрицы С есть отрицательные элементы, а в строке с номером k матрицы Т есть положительные элементы, то найти А = -С+ Т*С, иначе найти В = -Т + CТ.)

Код:
type
tm=array [0..100,0..100] of real;
implementation

{$R *.dfm}
var
n,mm,k:integer;
a,m,mT,aT,Y,R:tm;
l:real;
procedure A1(var G:tm;SG:tstringgrid);
var
i,j:integer;
begin
n:=strtoint(form1.edit4.Text);
SG.ColCount:=n;
SG.RowCount:=n;
for i:=0 to n-1 do
for j:=0 to n-1 do
SG.Cells[i,j]:=floattostr(G[i,j]);
end;

procedure A2(var G:tm);
var
k,i,j,p,t,n:integer;
begin
n:=strtoint(form1.edit4.Text);
l:=strtofloat(form1.edit3.Text);
G[0,0] := l;
for i:=0 to N-1 do begin
  if i>0 then G[i,0] := G[i-1,0] + 2;
  for j:=1 to n-1 do
    G[i,j] := G[i,j-1] + 1;
end;
end;


procedure A3(var G:tm);
var
i,j:integer;
begin
randomize;
n:=strtoint(form1.edit4.Text);
l:=strtofloat(form1.edit3.Text);
for i:=0 to n-1 do
for j:=0 to n-1 do
G[i,j]:=random(30)-15;
end;

Function Aga3(var G:tm):integer;
var
i,j,n,m:integer;
begin result:=0;
n:=strtoint(form1.edit4.Text);
m:=strtoint(form1.edit1.Text);
for i:=0 to n-1 do
 if G[m,i]<0 then begin
  result:=10;

 end;
end;

Function Aga31(var G:tm):integer;
var
i,j,n,k:integer;
begin result:=0;
n:=strtoint(form1.edit4.Text);
k:=strtoint(form1.edit2.Text);
for i:=0 to n-1 do
 if G[k,i]<0 then begin
  result:=10;

 end;
end;

procedure R1(var g,R:tm);
var
i,j:integer;
begin
for i:=0 to n-1 do
for j:=0 to n-1 do
R[i,j]:=G[i,j]*(-1);
end;


procedure Y1(var g,d,Y:tm);
var
i,j,k:integer;
s:real;
begin
for i:=0 to n-1 do
for j:=0 to n-1 do
begin
s:=0;
for k:=0 to n-1 do
begin
s:=D[i,k]*G[k,j]+s ;
Y[i,j]:=s;
end;
end;
end;

procedure Y2(var g,d,Y:tm);
var
i,j,k:integer;
s:real;
begin
for i:=0 to n-1 do
for j:=0 to n-1 do
begin
for k:=0 to n-1 do
begin
Y[i,j]:=D[i,j]+G[i,j];
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
A2(m);
A1(m,form1.StringGrid2) ;
A3(a);
A1(a,form1.StringGrid1);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
If aga3(a)>aga31(m) then
begin
Y1(m,a,Y);
R1(a,R);
Y2(Y,R,mt);
A1(mt,form1.StringGrid3);
end
else
begin
Y1(a,m,Y);
R1(m,R);
Y2(R,Y,mt);
A1(mt,form1.StringGrid3);
end;
end;
end.
MyaSnIKs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи с входными и выходными файлами Zinder Помощь студентам 3 05.03.2009 22:15
Работа с файлами МартинИ Паскаль, Turbo Pascal, PascalABC.NET 3 23.12.2008 21:36
Работа с файлами.Строки в записях. Ozerich Общие вопросы Delphi 12 20.07.2008 23:13