Перевод с Visual C++ на Visual Basic

koka278

New Member
12.12.2010
3
0
#1
помогите пожалуйста перевести этот код на Basic, программа выполняет операции над квадратными матрицами(транспонирует, находит определитель, складывает и перемножает 2 матрицы)

C++:
#include <iostream.h> 
#include <math.h> 
#include <windows.h>



char FileName[256];
char Stroka[100];
char RusText[100];
char *slovo;

double **Matrix,**Matrix2,**Matrix3,**Matrix4,**Matrix5,**Matrix6,det;
int i,j,N=0,vop;

//вычисление определителя
double Determinant()
{
int maxl,k;
double del, det=1,d;

//приведение матрицы к треугольному виду
for(k=0;k<N-1;k++)
{		
maxl=k;
for(i=k+1;i<N;i++)
{
if(fabs(Matrix[i][k])>fabs(Matrix[k][k]))
{
maxl=i;
}
}
if(maxl!=k)//если максимальный элемент не на диагонали, тогда переставляем строки с учетом изменения определителя
{
det=det*(-1);
for(j=0;j<N;j++)
{
d=Matrix[k][j];
Matrix[k][j]=Matrix[maxl][j];
Matrix[maxl][j]=d;
}
}
if(Matrix[k][k]!=0)
{
for(i=k+1;i<N;i++)
{
del=Matrix[i][k]/Matrix[k][k];
for(j=0;j<N;j++)
{
Matrix[i][j]=Matrix[i][j]-del*Matrix[k][j];//вычитание верхней строки от нижних
}

}
}
else
{
return 0;
}
}
//вычисление определителя путем премножения диагональных элементов
for(i=0;i<N;i++)
det*=Matrix[i][i];	
return det;
}


//транспонирование
double transpon()
{
Matrix6=new double*[N];
for (int i=0; i<N; i++)
{
Matrix6[i]=new double[N];
for (int j=0; j<N; j++)
{
Matrix6[i][j] = Matrix[j][i];
cout<<Matrix6[i][j]<<"\t";
}
cout<<endl;
}

return 0;
}
// сложение двух матриц
double slozhenie()
{

Matrix3=new double*[N];
for (int i=0; i<N; i++)
{
Matrix3[i]=new double[N];
for (int j=0; j<N; j++)
{
Matrix3[i][j] = Matrix[i][j] + Matrix2[i][j];
cout<<Matrix3[i][j]<<"\t";
}
cout<<endl;
}

return 0;
}

// умножение двух матриц
double umnozhenie()
{

Matrix5=new double*[N];	 
for (int i=0; i<N; i++)
{					
Matrix5[i]=new double[N];
for (int j=0; j<N; j++)
{
Matrix5[i][j]=0;
for(int k=0;k<N;k++)
Matrix5[i][j] +=Matrix[i][k]*Matrix4[k][j];
}
}


return 0;
}


main()
{
do
{
char RusMatrVvd[20],RusMatrStr[15],RusMatrStlb[15];
CharToOem("Введите элемент ",RusMatrVvd);
CharToOem("-ой стоки ",RusMatrStr);
CharToOem("-ого столбца: ",RusMatrStlb);
CharToOem("Введите размерность квадратной матрицы : ",RusText);			
cout<<RusText;
cin>>N;
Matrix=new double*[N];		
for(i=0;i<N;i++)		
{	
Matrix[i]=new double[N];
for(j=0;j<N;j++)
{
cout<<RusMatrVvd<<i+1<<RusMatrStr<<j+1<<RusMatrStlb;
cin>>Matrix[i][j];
}
}

CharToOem("Исходная матрица:",RusText);
cout<<endl<<RusText<<endl;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cout<<Matrix[i][j]<<"\t";
}
cout<<endl;
}


CharToOem("Что делать? ",RusText);			
cout<<endl<<RusText<<endl;
CharToOem("1 - Вычисление определителя матрицы",RusText);
cout<<endl<<RusText<<endl;
CharToOem("2 - Сложение двух матриц ",RusText);
cout<<endl<<RusText<<endl;
CharToOem("3 - Умножение одной матрицы на другую ",RusText);
cout<<endl<<RusText<<endl;
CharToOem("4 - Нахождение транспонированной матрицы ",RusText);
cout<<endl<<RusText<<endl<<endl;
int vop1;
cin>>vop1;
switch(vop1)
{
case 1:
{
det = Determinant();
CharToOem("Определитель равен: ",RusText);
cout<<endl<<RusText<<det<<endl;
break;
}

case 2:
{
CharToOem("Введите элементы второй матрицы : ",RusText);	
cout<<RusText<<endl;
Matrix2=new double*[N];		
for(i=0;i<N;i++)		
{	
Matrix2[i]=new double[N];
for(j=0;j<N;j++)
{
cout<<RusMatrVvd<<i+1<<RusMatrStr<<j+1<<RusMatrStlb;
cin>>Matrix2[i][j];
}
}

CharToOem("Вторая матрица:",RusText);
cout<<endl<<RusText<<endl;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cout<<Matrix2[i][j]<<"\t";
}
cout<<endl;
}
CharToOem("Сумма:",RusText);
cout<<endl<<RusText<<endl;
slozhenie();
break;
}
case 3:
{
CharToOem("Введите элементы второй матрицы : ",RusText);	
cout<<RusText<<endl;
Matrix4=new double*[N];		
for(i=0;i<N;i++)		
{	
Matrix4[i]=new double[N];
for(j=0;j<N;j++)
{
cout<<RusMatrVvd<<i+1<<RusMatrStr<<j+1<<RusMatrStlb;
cin>>Matrix4[i][j];
}
}

CharToOem("Вторая матрица:",RusText);
cout<<endl<<RusText<<endl;
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cout<<Matrix4[i][j]<<"\t";
}
cout<<endl;
}
CharToOem("Произведение:",RusText);
cout<<endl<<RusText<<endl;
umnozhenie();
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
cout<<Matrix5[i][j]<<"\t";
}
cout<<endl;
}
break;
}
case 4:
{
CharToOem("Транспонированная матрица:",RusText);
cout<<endl<<RusText<<endl;
transpon();
break;
}
}




CharToOem("Завершить работу?",RusText);
cout<<endl<<RusText<<endl;
CharToOem("1 - Да",RusText);
cout<<endl<<RusText<<endl;
CharToOem("2 - Нет ",RusText);
cout<<endl<<RusText<<endl;
cin>>vop;
}
while(vop!=1);

return 0;
}