Страница 1 из 1

симметричность строки матрицы

Добавлено: 08 апр 2009, 10:33
roman09
3. Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если k-я строка матрицы симметрична, и значение 0 в противном случае. я саму программу написал, я понять не могу как мне вычислить симетричность строки в матрице... какая то х... эт все в delphi=) :confused:

Re: помогите пожалуйста!!!!!!!!!))) оч надо...

Добавлено: 08 апр 2009, 11:59
atavin-ta
Строка симметрична, если она при перевороте превращается в себя то есть если при любом 1<=i<=m x[k,i]=x[k,m+1-i]
&quot писал(а):я саму программу написал, я понять не могу как мне вычислить симетричность строки в матрице
Как же ты тогда написал?

Re: помогите пожалуйста!!!!!!!!!))) оч надо...

Добавлено: 08 апр 2009, 14:31
roman09
да составление самой матрицы=) я замутил, осталось высчислить эту ж...=)
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
да кстати а что такое (к) и (m)???
--------------------------------------------------------------------------------
Добавленное сообщение
--------------------------------------------------------------------------------
и что такое (х)???????????

Re: симметричность строки матрицы

Добавлено: 09 апр 2009, 12:13
atavin-ta
&quot писал(а):да кстати а что такое (к) и (m)???
Эти ввеличины я взял у тебя.
&quot писал(а): что такое х
x замени именем матрицы

Re: симметричность строки матрицы

Добавлено: 09 апр 2009, 12:26
roman09
ВОПРОС В ТЕКСТЕ=) ПОМОГИ=))) PLEASE!)
[syntax=delphi]
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, Buttons;

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
UpDown1: TUpDown;
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
BitBtn1: TBitBtn;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
A:array[1..21,1..21]of extended;
B:array[1..21] of Extended;
N,i,j: integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
N:=strtoint(edit1.text) ;
StringGrid1.RowCount:=n+1;
StringGrid1.ColCount:=N+1;
StringGrid2.RowCount:=N+1;
StringGrid1.Cells[0,0]:='массив А';
StringGrid2.Cells[0,0]:='массив B';
StringGrid1.Height:=20*(n+1)+5+n;
StringGrid1.Width:=20*(n+1)+5+n;
StringGrid2.Height:=20*(n+1)+5+n;
for i:=1 to n do
begin
StringGrid1.Cells[0,i]:=inttostr(i);
StringGrid1.Cells[i,0]:=inttostr(i);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
for i:=1 to n do
begin {этот бегин не нужен}
For j:=1 to n do
begin
Stringgrid1.Cells[i,j]:=floattostr(random(50)-20);
Stringgrid1.Update; {обновление}
sleep(50);{задержка}
end;
end;
Button3.Enabled:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
{КОРОЧЕ Я НЕ ЧЕ НЕ ПОНЯЛ=) ЧЕ МНЕ СДЕСЬ НАПИСАТЬ???)))}
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
N:=3;
StringGrid1.RowCount:=n+1;
StringGrid1.ColCount:=N+1;
StringGrid2.RowCount:=N+1;
StringGrid1.Cells[0,0]:='массив А';
StringGrid2.Cells[0,0]:='массив B';
StringGrid1.Height:=20*(n+1)+5+n;
StringGrid1.Width:=20*(n+1)+5+n;
StringGrid2.Height:=20*(n+1)+5+n;
for i:=1 to n do
begin
StringGrid1.Cells[0,i]:=inttostr(i);
StringGrid1.Cells[i,0]:=inttostr(i);
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
for i:=1 to n do
begin {этот бегин не нужен}
For j:=1 to n do
begin
Stringgrid1.Cells[i,j]:='';
Stringgrid2.Cells[0,j]:='';
end;
end;
end;

initialization randomize;{инициализируем}
end.
[/syntax]

Re: симметричность строки матрицы

Добавлено: 13 апр 2009, 09:28
atavin-ta
Издеваешься?

Re: симметричность строки матрицы

Добавлено: 13 апр 2009, 10:10
Esgal
пусть х - исходная матрица в которой n строк и m столбцов

Код: Выделить всё

for k:=1 to n do
  begin
    flag:=false;
    for i:=1 to ((m div 2) + 1) do
      if x[k,i]<>x[k,m-i+1] then flag:= true;
    if flag then В[k]:=0 else В[k]:=1;
  end;
массив В - то что тебе нужно

Re: симметричность строки матрицы

Добавлено: 14 апр 2009, 09:39
roman09
спасиб=)))) очень признателен=)))

Re: симметричность строки матрицы

Добавлено: 14 апр 2009, 13:43
Esgal
рады помочь