Программа на паскале рабочая. Нашла как на С++ будут вводиться и выводится матрицы и вектора, но как всё это объеденить я не знаю. С с++ не знакома. Или подскажите какой программой можно перевести самой. Буду очень благодарна
const n=2;
type TAr2=array[1..n,1..n] of real;
TAr1=array[1..n] of real;
const
//
A:TAr2= (
(1/4,1/8),
(1/5,2/5)
);
C:TAr1= (1,2);
Abis:TAr2 = (
(1/4,1/3),
(1/4,1/3)
);
l:TAr2 = (
(1,0),
(0,1)
);{еденичная матрица}
var i,j:integer;
X,AX,Xbis:TAr1;
Y,Y2,MM,MAD,TMAD,B,B2:TAr2;
opred:real;
kol:integer;
procedure VivodVektora(ar:TAr1);
var i:integer;
begin
for i := 1 to n do begin
write (ar[i]:4:1,' ');
end;
writeln;
end;//VivodVektora
procedure VivodMatricy(ar:TAr2);
var i,j:integer;
begin
for i := 1 to n do begin
for j := 1 to n do begin
write (ar[i,j]:4:1,' ');
end;
writeln;
end;
end;//VivodMatricy
Function determ(ar:TAr2):real;
var i,j:integer;
begin
Result:=(Ar[1,1]*Ar[2,2])-(Ar[1,2]*Ar[2,1]);
end;
Function ObrMatrica(ar:TAr2):TAr2;
var i,j:integer;
begin
opred:=determ(ar);
if opred=0 then begin
writeLn('определитель = 0:');
writeLn('обратной матрицы НЕ существует');
writeLn('решение отсутствует');
Exit;
end else begin
writeLn('определитель:');
writeLn (opred:4:4,' ');
end;
MM[1,1]:= ar[2,2];
MM[2,2]:= ar[1,1];
MM[1,2]:= ar[2,1];
MM[2,1]:= ar[1,2];
writeLn('Матрица MM:');
VivodMatricy(MM);
MAD[1,1]:=MM[1,1];
MAD[2,2]:=MM[2,2];
MAD[1,2]:= - MM[1,2];
MAD[2,1]:= - MM[2,1];
writeLn('Матрица MAD:');
VivodMatricy(mad);
for i := 1 to n do begin
for j := 1 to n do begin
tmad[j,i]:=mad[i,j];
end;
end;
writeLn('Матрица TMAD:');
VivodMatricy(Tmad);
for i := 1 to n do begin
for j := 1 to n do begin
Result[i,j]:=(1/abs(opred))*Tmad[i,j];
end;
end;
end;//ObrMatrica
begin
writeLn('Исходные данные:');
writeLn('Матрица A:');
VivodMatricy(a);
writeLn('Матрица l:');
VivodMatricy(l);
writeLn('Матрица A":');
VivodMatricy(Abis);
writeLn('Вектор С:');
VivodVektora(C);
for i := 1 to n do begin
for j := 1 to n do begin
Y[i,j]:=l[i,j]-A[i,j];
end;
end;
writeLn('Матрица Y:');
VivodMatricy(Y);
B:=ObrMatrica(Y);
writeLn('Матрица B, обратная для Y:');
VivodMatricy(B);
for i := 1 to n do begin
X[i]:=0;
for j := 1 to n do begin
X[i]:=X[i]+(B[i,j]*C[j]);
end;
end;
writeLn('вектор X:');
VivodVektora(X);
for i := 1 to n do begin
AX[i]:=0;
for j := 1 to n do begin
AX[i]:=AX[i]+(A[i,j]*X[j]);
end;
end;
kol:=0;
for i := 1 to n do begin
if AX[i]<=C[i] then begin
kol:=kol+1;
end;
end;
if kol=n then begin
writeLn('Экономика, характеризуемая матрицей A и векторами X и C - высокоэффективная');
end else begin
writeLn('Экономика, характеризуемая матрицей A и векторами X и C - НЕ является высокоэффективной');
end;
for i := 1 to n do begin
for j := 1 to n do begin
Y2[i,j]:=l[i,j]-Abis[i,j];
end;
end;
writeLn('Матрица Y2:');
VivodMatricy(Y2);
B2:=ObrMatrica(Y2);
writeLn('Матрица B2, обратная для Y2:');
VivodMatricy(B2);
for i := 1 to n do begin
Xbis[i]:=0;
for j := 1 to n do begin
Xbis[i]:=Xbis[i]+(B2[i,j]*C[j]);
end;
end;
writeLn('вектор X":');
VivodVektora(Xbis);
end.
Вот что на с++ у меня есть
#include <iostream>
#include <iomanip>
#include <fstream>
using namespace std;
//функция для ввода матрицы
double ** inputm(int n, int m)
{int i,j;
double **a;
a=new double *[n];
if(a==NULL){cout<< "\n Не хватает оперативной памяти под строки";
exit(1);
}
for(i=0;i< n;i++)
{a[i]=new double [m];
if(a[i]==NULL){cout<< "\n Не хватает оперативной памяти под столбцы";
exit(1);
}
}
for(i=0;i< n;i++)
{cout<< "\n Вввести "<< i<<" строку \n";
for(j=0;j< m;j++)
cin>>a[i][j];
}
return a;
}
//функция для ввывода матрицы
void outputm(double **a, int n, int m)
{int i,j;
for(i=0;i<=n;i++)
{cout<< endl;
for(j=0;j<=m;j++)
cout<< setw(10)<< a[i][j];
}
}
//функция для ввода вектора
double * inputv(int n)
{int i;
double * a;
a=new double[n];
if(a==NULL){cout<<"\n Не хватает оперативной памяти под вектор";
exit(1);
}
for(i=0;i< n;i++)
cin>>a[i];
return a;
}
//функция для вывода вектора
void outputv(double *a,int n)
{int i;
for(i=0;i< n;i++)
{if(i%7==0) cout<< endl;
cout<< setw(10)<< a[i];
}
}
//транспонирование матриц
double** transp(double** a,int n, int m)
{int i,j;
double **b;
b=new double *[n];
if(b==NULL){cout<< "Нет ОП \n";
exit(1);
}
for (i=0;i< n;i++)
{b[i]=new double[m];
if(b[i]==NULL){cout<< "Нет ОП \n";
exit(1);
}
}
for (i=0;i< n;i++)
for (j=0;j< m;j++)
b[j][i]=a[i][j];
return b;
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Всем привет ! Есть такая задача она проходит 50%Помогите пожалуйста найти мою ошибку ,ни как не могу найти ! Вот задача :
Кодирую программку для CRC разных стандартов(побитовая обработка) Застрял на параметре init
Программа компилируется, но при запуске и вводе первого значения вылетает ошибкаВ чем проблема понять не могу