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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2009, 13:12   #1
neomaximus
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 47
Вопрос Проверьте правильность написания кода в delphi

Вот зание : Определить является ли заданное целое квадратной матрицы 10-го порядка, симметрична относительно главной диагонали
Код:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;

procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
mas:array[1..100,1..100] of integer;
implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
const
n = 9; //Размерность матрицы
var
ms: array[1..n,1..n] of integer;
i, j: integer;
fl: boolean; // флаг симметричности

begin
fl:=True;

for i :=1 to n do
 for j:= 1 to n do
  ms[i,j]:=StrToInt(StringGrid1.Cells[i,j]); // Ввод матрицы

for i :=1 to n do
 for j:= 1 to n do
  if ms[i,j] <> ms[j,i] //если элемент не симметричен
   then fl:=False; // то флаг симметричности сделать ложным

Form1.Caption := BoolToStr(fl);
end;


procedure TForm1.Button1Click(Sender: TObject);

var i,j:integer;
begin
randomize;
for i:=1 to 9 do
 begin
 for j:=1 to 9 do
  begin
  mas[i,j]:=random(2);
  stringgrid1.Cells[j,i]:=inttostr(mas[i,j]);
  
  end;
 end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.Close;
end;

end.

Последний раз редактировалось Stilet; 09.04.2009 в 13:26.
neomaximus вне форума Ответить с цитированием
Старый 09.04.2009, 13:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну а сам то проверял ее?
Цитата:
for i :=1 to n do
for j:= 1 to n do
if ms[i,j] <> ms[j,i] //если элемент не симметричен
then fl:=False; // то флаг симметричности сделать ложным
А я бы так сделал:
Код:
i :=1; while (i<=n)and(fl) do begin
 j:= 1; while (J<=n)and(fl) do begin
  if ms[i,j] <> ms[n-i+1,n-j+1] //если элемент не симметричен
   then fl:=False; // то флаг симметричности сделать ложным
end; end;
ТОлько помоему там по другому все равно проверять надо...
I'm learning to live...

Последний раз редактировалось Stilet; 09.04.2009 в 13:31.
Stilet вне форума Ответить с цитированием
Старый 09.04.2009, 17:29   #3
neomaximus
Пользователь
 
Регистрация: 11.06.2008
Сообщений: 47
По умолчанию

Цитата:
ТОлько помоему там по другому все равно проверять надо...
Это как?
neomaximus вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правила написания кода на Delphi Virtson Общие вопросы Delphi 17 06.08.2010 08:59
Структура кода в Delphi 7. Вадим Буренков Общие вопросы Delphi 8 15.03.2009 12:28
Delphi. Редактор кода. BOBAH13 Общие вопросы Delphi 5 25.05.2008 00:20
Правила написания формул в Delphi yurik44 Общие вопросы Delphi 1 13.06.2007 15:57
Трансляция кода из Delphi в C phobos Помощь студентам 9 21.04.2007 18:26