IPB
ЛогинПароль:

> вещественная матрица, ООП в ТР
Svetlana
сообщение 16.09.2009 18:04
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Женский

Репутация: -  0  +


Помогите, пожалуйста, доработать код.Думаю ошибок там много(((

  program lab_a;
{Описать класс, реализующий тип данных "вещественная матрица" и работу
с ними.Методы класса должны обеспечивать:
 	сложение, вычитание, умножение матриц (умножение, как на другую
                                         матрицу, так и на число);
 	вычисление транспонированной матриц;
 	проверку типа матрицы (квадратная, диагональная, нулевая, единичная);
Написать программу, демонстрирующую работу с этим  классом.}

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
veshmatr=class
X:array  of array of  Double;
n,m:integer;

Procedure vvod (var B:veshmatr);
Procedure vivod ( var B:veshmatr);
Procedure slosh(const A,B:veshmatr; var C:veshmatr);
Procedure vichet(const A,B:veshmatr; var C:veshmatr);
Procedure umnosh_na_chislo(const A:veshmatr; var B:veshmatr);
Procedure umnosh_na_matr(const A,B:veshmatr; var C:veshmatr);
Procedure transpan(const A:veshmatr;var B:veshmatr);
Function TypematriX:string;{определяет тип матрицы:квадратная,
                               диоганальная,нулевая или единичная}
end;


var
W,R,T:veshmatr;
i,j,k:integer;


procedure veshmatr.vvod( var B:veshmatr);
begin  for i:=1 to n do 
         for j:=1 to m do begin
        write('vvedite_element[',i,',',j,']=','');
       readln(B.X[i,j])  end
end;

Procedure veshmatr.vivod ( var B:veshmatr);
begin
       for i:=1 to n do begin
       for j:=1 to m do writeln(' ',B.X[i,j]:12:3); writeln end;

end;

Procedure veshmatr.slosh(const A,B:veshmatr; var C:veshmatr);
begin
  for I := 1 to n do
  for j := 1 to m do
    begin   C.X[i,j]:=A.X[i,j]+B.X[i,j] end;
end;

Procedure veshmatr.vichet(const A,B:veshmatr; var C:veshmatr);
begin
   for I := 1 to n do
   for j := 1 to m do
     begin   C.X[i,j] :=A.X[i,j]-B.X[i,j] end;
end;

Procedure veshmatr.umnosh_na_chislo(const A:veshmatr; var B:veshmatr);
var chislo:double;
begin
          writeln('vvedite_chislo');
          readln(chislo);
          for i:=1 to n do
          for j:=1 to m do
            begin B.X[i,j]:= A.X[i,j] * chislo end
end;

Procedure veshmatr.umnosh_na_matr(const A,B:veshmatr; var C:veshmatr);
var
  i,j,k:word;
begin for i:=1 to n do
        for j:=1 to m do
           begin
           C.X[i,j]:=0;
           for k:=1 to n do
           C.X[i,j]:=C.X[i,j]+A.X[i,k]*B.X[k,j]; end;
end;

Procedure veshmatr.transpan( const A:veshmatr;var B:veshmatr);
var
  i,j:integer;
begin
  for i:=1 to n do
    for j:=i to m do
      B.X[i,j]:=A.X[j,i];
end;

Function veshmatr.TypematriX:string;
begin
if n=m then writeln('matrica_kvadratnaya');

        for i:=1 to n do
        for j:=1 to m do  begin
           if (i<>j) and (X[i,j]=0) then writeln('matrica_diagonalnaya');
           if X[i,j]=0 then writeln('matrica_nulevaya'); end;

        for i:=1 to n do
        for j:=1 to m do
           if (i=j)  and (X[i,j]=1)  then writeln('matrica_edinichnaya')

end;

{начало программы}
begin
W:= veshmatr.Create;    {создаём первую матрицу}
W.vvod(W);              {ввод первой матрицы}
R:= veshmatr.Create;    {создаём 2-ую матрицу}
R.vvod(r);              {ввод 2-ой матрицы}
T.slosh(W,R,T);
T.vivod(T);
T.vichet(W,R,T);
T.vivod (T);
R.umnosh_na_chislo(W,R);
R.vivod (r);
T.umnosh_na_matr(W,R,T);
T.vivod (T);
R.transpan(R,T);
R.vivod (r);


W.Free;     {удаляем объект}
R.Free;     
T.Free;     
                       
readln
end.




Сообщение отредактировано: Svetlana - 16.09.2009 18:07
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 31.07.2025 2:18
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"