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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2014, 11:22   #1
qpMAXqp
Пользователь
 
Аватар для qpMAXqp
 
Регистрация: 20.11.2013
Сообщений: 16
Смущение Пользовательский класс Delphi 7

Здравствуйте. Хочу выполнить задачу:
Разработать пользовательский класс, методы которого осуществляют поиск минимального элемента побочной диагонали инициализации матрицы и вывод
значения на экран.
Вот есть код:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    btn1: TButton;
    txt1: TStaticText;
    strngrd1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure btn1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

type

  Tmyclas = class (TForm1)


    constructor Create (Size : Integer);
    function PrintMatrix: string;
    function GetMin: integer;
      private
        
    a: array of array of Integer;
    fSize: integer;
        public
end;

implementation


constructor Tmyclas.Create(Size: Integer);
var
_size: Integer;
i,j: Integer;
begin
  if Size <=0 then
   _size:= 1
   else
   _size:= Size;
   fSize:= _size;
  Randomize;
SetLenght(a,_size);
  for I:= 0 to _size-1 do
   begin
     SetLenght(a[i], _size);
     for j:= 0 to _size-1 do
     a[i,j]:= Random(100);
   end;
end;




 function Tmyclas.PrintMatrix : string;
var
  s : string;
  i,j: integer;
  begin
  s:= ";
  for i:= 0 to fSize-1 do
  begin
    for j:= 0 to fSize-1 do
    s:= s + inttostr(a[i,j]) + '';
    s:= s + #13 + #10;
    end;
    result:= s;
  end;

  function Tmyclas.GetMin : Integer;
  var
    min : Integer;
    i, j: Integer;
    begin
      min:= A[0, fSize-1];
      for i:= 0 to fSize-1 do
        if (A[i, fSize -1 -i ]) < min then min:= a[i, fSize-1];
        Result:= min;
    end;
  end.
Есть и ошибка : undeclared identifier SetLength
Хочется и вывести, и довести до ума.
qpMAXqp вне форума Ответить с цитированием
Старый 19.06.2014, 12:11   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1. SetLenght <> SetLength
2. Tmyclas = class (TForm1) ??? Че за наворот
3. constructor Tmyclas.Create(Size: Integer); где Inherited для выполнения родительского конструктора?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.06.2014, 12:14   #3
qpMAXqp
Пользователь
 
Аватар для qpMAXqp
 
Регистрация: 20.11.2013
Сообщений: 16
По умолчанию

Вот исправленный вариант. Как вывести на экран?
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    lbl1: TLabel;
    btn1: TButton;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  Tmyclas = class

  private
    a: array of array of Integer;
    fSize: Integer;
  public
    constructor Create (Size : integer);
    function PrintMatrix: string;
    function GetMin: integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor Tmyclas.Create(Size: Integer);
var
_size : Integer;
i, j : integer;
begin
  if Size <= 0 then
    _size := 1
  else
    _size := Size;
    fSize := _size;
    Randomize;
    SetLength(A, _size);
for i := 0 to _size-1 do
  begin
    SetLength(A[i], _size);
    for j := 0 to _size-1 do
    A[i, j] := Random(100);
  end;
end;

function Tmyclas.PrintMatrix : string;
var
s : string;
i, j : integer;
begin
s := '';
    for i := 0 to fSize-1 do
  begin
    for j := 0 to fSize-1 do
    s := s + IntToStr(A[i,j]) + ' ';
    s := s + #13+#10;
  end;
    Result := s;
    ShowMessage(s);
end;

function Tmyclas.GetMin : integer;
var
min : Integer;
i, j : integer;
begin
min := A[0, fSize-1];
    for i := 0 to fSize-1 do
  if (A[i, fSize - 1 - i]) < min then
    min := A[i, fSize-1];
    Result := min;
end;


end.
qpMAXqp вне форума Ответить с цитированием
Старый 19.06.2014, 12:16   #4
qpMAXqp
Пользователь
 
Аватар для qpMAXqp
 
Регистрация: 20.11.2013
Сообщений: 16
По умолчанию

2. Tmyclas = class (TForm1) ??? Че за наворот
наследование с тформа
qpMAXqp вне форума Ответить с цитированием
Старый 19.06.2014, 12:41   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

в TForm1 нельзя что ли нужные методы и свойства добавить?
И по п.3 ни каких телодвижений не заметно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.06.2014, 12:56   #6
qpMAXqp
Пользователь
 
Аватар для qpMAXqp
 
Регистрация: 20.11.2013
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
в TForm1 нельзя что ли нужные методы и свойства добавить?
И по п.3 ни каких телодвижений не заметно
вывел.
п.3. не особо понятен.
Код мне помогали писать, свободно им ещё не владею.
Вообщем. Решил. Благодарю тебя за помощь и отзывчивость
qpMAXqp вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сгенерировать библиотеку, чтобы ее функции принимали параметром пользовательский класс wol4aravio C# (си шарп) 5 22.10.2012 23:19
Определить пользовательский класс... BoCbMou C# (си шарп) 0 18.04.2012 12:59
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
Описать класс-родитель и класс-потомок. Delphi 7 Andrew_M Помощь студентам 0 15.01.2011 14:42
Пользовательский компонент (Delphi) aaa777 Помощь студентам 2 14.05.2009 00:42