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®; {ввод 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 ®;
T.umnosh_na_matr(W,R,T);
T.vivod (T);
R.transpan(R,T);
R.vivod ®;


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

readln
end.




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

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


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

 



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