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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2009, 20:29   #1
honest
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 11
Восклицание Классы

Составить описание класса, обеспечивающего представление матрицы произвольного размера с возможностью изменения числа строк и столбцов, а также вывода на экран алгебраического дополнения заданного элемента
Написать программу, демонстрирующую работу с этим классом.

Написать на Delphi
honest вне форума Ответить с цитированием
Старый 16.09.2009, 20:37   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

honest и что дальше? Где ваши мысли по этому вопросу? Или это заказ и нужен перенос во Фриланс?
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 16.09.2009, 21:04   #3
honest
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 11
По умолчанию

Это не заказ! Мы классы начали проходить. Лекции уже были, а на практике задач еще не было. Преподаватель задания дала, желательно до завтра решить. Я подумал, ничего толком не понял. Вот, подумал, что на форуме найдутся люди, которые помогуть разобраться.
honest вне форума Ответить с цитированием
Старый 16.09.2009, 22:00   #4
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

Ну на делфи я не реализую,пишу на С++,но думаю,что это хоть как-то поможет.
Код:
//конструктор
template<class T>
Array<T>::Array(int str,int stolb)
{
    //проверка границ
    if(str<=0||stolb<=0)
        Error(invalidArraySize);
    alist=new T[str][stolb];
    //убеждаемся,что память выделили
    if(alist==NULL)
       Error(memoryAllocationError);
}
//деструктор
template<class T>
Array<T>::~Array(void)
{
    delete[]alist;
}
//копирование 
template<class T>
Array<T>::Array(const Array<T>& X,& Y)
{
   int n=Y.size;
   //пришли два объекта копируем из Y в Х
   //тут ещё проверочку можно сделать что больше и тд
   X* srcptr=Y.alist;//адрес начала У.alist
   X* destptr=alist;//адрес alist
   while(n--)//копировать список
     *destptr++=*strcptr++;
}
Вообще я в классах не очень и никогда их не проходил,поэтому не стреляйте в пианиста)...Да,и перекладывайте сами на Delphi
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 17.09.2009, 09:00   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Могу предложить такое описагние:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;
  type
   TMa=class(TObject)
   private
    arr:array of array of integer;
    function Getitem(x, y: integer): integer;
    procedure Setitem(x, y: integer; const Value: integer);
   public
    Property item[x,y:integer]:integer read Getitem write Setitem;
    Constructor Create(width:integer=0;length:integer=0);
    Destructor Free;
   end;
   var a:TMa;
{ TMa }
         {$o-}
constructor TMa.Create(width, length: integer);
begin
 if (width<>0)or(length<>0) then SetLength(arr,width,length);
end;

destructor TMa.Free;
begin
  SetLength(arr,0,0);
end;

function TMa.Getitem(x, y: integer): integer;
begin
  if (y>=Low(arr))and(y<=High(arr)) then
   if (x>=Low(arr[y]))and(x<=High(arr[y])) then
     Result:=arr[y,x];
end;

procedure TMa.Setitem(x, y: integer; const Value: integer);
begin
 if (y>=Low(arr))then begin
  if (y>high(arr)) then Setlength(arr,y+1);
  if (x>=Low(arr[y]))then begin
    if(x>high(arr[y])) then Setlength(arr[y],x+1);
   arr[y,x]:=Value;
  end;
 end;
end;

begin
 a:=TMa.Create;
 a.item[4,5]:=5;
 write(a.item[4,5]);
 Readln;
 a.Free;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Думаю автор сам разгребется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2009, 21:23   #6
honest
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 11
По умолчанию Подскажите

Подкажите, а как вывести алгебраическое дополнение???
Вот то, что у меня получилось, но алгебраическое дополнение не выводится...

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
TMa=class(TObject)
private arr:array of array of integer;
function Getitem(x, y: integer): integer;
procedure Setitem(x, y: integer; const Value: integer);
function AlgDop(x,y:integer): TMa;
procedure Print();

public
Property item[x,y:integer]:integer read Getitem write Setitem;
Constructor Create(width:integer=0;length:integer=0);
Destructor Free;
end;

var a,b:TMa;
{ TMa }
{$o-}

constructor TMa.Create(width, length: integer);
begin
if (width<>0)or(length<>0) then SetLength(arr,width,length);
end;

destructor TMa.Free;
begin
SetLength(arr,0,0);
end;

function TMa.Getitem(x,y:integer):integer;
begin
if (y>=Low(arr))and(y<=High(arr)) then
if (x>=Low(arr[y]))and(x<=High(arr[y])) then
Result:=arr[y,x];
end;

procedure TMa.Setitem(x,y:integer; const Value: integer);
begin
if (y>=Low(arr))then begin
if (y>high(arr)) then Setlength(arr,y+1);
if (x>=Low(arr[y]))then begin
if(x>high(arr[y])) then Setlength(arr[y],x+1);
arr[y,x]:=Value;
end;
end;
end;
Procedure TMa.Print();
var i,j:integer;
begin

for i:= 1 to high(arr) do begin
for j:= 1 to high(arr) do begin
write(' ',Getitem(i,j));
end; writeln;
end;
end;

Function TMa.AlgDop(x,y :integer ): TMa;
var i,j:integer; temp:Tma;
begin
i:=0; j:=0;
temp.Create;
for i:= 1 to length(arr) do begin
for j:= 1 to length(arr) do begin
if i<x then if j<y then temp.arr[i,j]:=Getitem(x,y);
if i>x then if j<y then temp.arr[i,j]:=Getitem(x-1,y);
if i<x then if j>y then temp.arr[i,j]:=Getitem(x,y-1);
if i>x then if j>y then temp.arr[i,j]:=Getitem(x-1,y-1)
end;

end;
result:=temp;
temp.Free;
end;
Var i,j:integer;
begin
a:=TMa.Create;
b:=TMa.Create;
for i:= 1 to 10 do begin
for j:= 1 to 10 do begin
a.item[i,j]:=i+j;
end;
end;
{ a.item[4,5]:=5; }
{write(a.item[4,5]);}
a.Print;
{a.AlgDop(1,1).print;}
Readln;
readln;
a.Free;

{ TODO -oUser -cConsole Main : Insert code here }
end.
honest вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы в C++ Soloma Помощь студентам 2 04.06.2009 21:49
классы elenSV Общие вопросы C/C++ 0 31.05.2009 09:48
Классы TeleSky Помощь студентам 11 05.01.2009 13:43
классы в С++ kadaffi Помощь студентам 1 18.11.2008 09:30