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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2009, 13:51   #1
roman09
 
Регистрация: 09.04.2009
Сообщений: 4
По умолчанию Работа с матрицами (Delphi)

Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если k-я строка матрицы симметрична, и значение 0 в противном случае. это в делфи... смотрите неже...


Код:
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;
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    BitBtn1: TBitBtn;
    Button4: TButton;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    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,M,i,j: integer;
  f: boolean;
implementation

{$R *.dfm}



procedure TForm1.FormCreate(Sender: TObject);
begin
N:=3;
M:=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)+20+n;
for i:=1 to n do begin
StringGrid1.Cells[0,i]:='i='+inttostr(i);
StringGrid1.Cells[i,0]:='j='+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;
procedure TForm1.Button1Click(Sender: TObject);
begin
N:=strtoint(edit1.text);
M:=strtoint(edit2.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)+20+n;
for i:=1 to n do begin
StringGrid1.Cells[0,i]:='i='+inttostr(i);
StringGrid1.Cells[i,0]:='j='+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(5));
Stringgrid1.Update;  {обновление}
sleep(50);{задержка}
end;end;
Button3.Enabled:=true;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
for i := 1 to n do begin
f := true;
for j := 1 to m do
if not(A[i,j] = A[i,m+1-j]) then f := false;????????????????????? правильно???????
if f then B[i] := 1 else B[i] := 0;
stringgrid2.Cells[0,i]:=floattostr(B[i]);
stringgrid2.Update;
Sleep(50);

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

Последний раз редактировалось roman09; 10.04.2009 в 14:38.
roman09 вне форума Ответить с цитированием
Старый 10.04.2009, 14:42   #2
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Код:
if A[i,j] <> A[i,m+1-j] then f := false;
привычнее смотрится
Нормальное состояние техники - нерабочее, все остальное частный случай.
alex_fcsm вне форума Ответить с цитированием
Старый 10.04.2009, 16:14   #3
roman09
 
Регистрация: 09.04.2009
Сообщений: 4
По умолчанию

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

Я по-моему тебе уже давал пример...
Ты что в нем не разобрался?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.04.2009, 18:48   #5
roman09
 
Регистрация: 09.04.2009
Сообщений: 4
По умолчанию

не там, тоже че то не пашит... я вот и разобраться не могу...
roman09 вне форума Ответить с цитированием
Старый 11.04.2009, 10:42   #6
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

попробуй внутренний цикл по j сделать так:
for j := 1 to m div 2 do f := (A[i,j] = A[i,m+1-j]) and f;
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 11.04.2009, 11:32   #7
roman09
 
Регистрация: 09.04.2009
Сообщений: 4
По умолчанию

че то все равно пишет одни 1 в массив В... я уже не знаю че делать...
roman09 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами (delphi) Майструк Татьяна Помощь студентам 3 07.04.2009 20:33
Работа с матрицами (StringGrid, Delphi) Ратмир Помощь студентам 2 04.04.2009 13:41
Работа с матрицами и строками в Delphi Deniz Помощь студентам 2 03.12.2008 21:27
help!!! работа с матрицами Zagran Паскаль, Turbo Pascal, PascalABC.NET 4 08.01.2007 15:54