1
диагонали матрицы T, то найти F=C*T-Tt, иначе найти H=Ct-T*C,где Tt, Ct –
транспонированные матрицы для T и C, соответственно.
2
18. Найти a – количество элементов k-ой строки матрицы T, меньших
соответствующих элементов l-ой строки матрицы C; найти b – количество
элементов l-ой строки матрицы T, меньших соответствующих элементов k-ой
строки матрицы C. Если a>b, то найти H=a*T+b*C, иначе найти F=b*T+a*C.
1000
E= 0 1 0 0
0010
0001
1000
E= 0 1 0 0
0010
0001
1000
E= 0 1 0 0
0010
0001
3
найти P-сумму элементов в первой строке матрицы T и матрицу A=(S+P)C-T,
иначе найти матрицу B=nC+SnT.
Методические указания:
Функции структуры
4
функции их обработки.
Описание сложных типов данных
как структур с функциями
5
for (i=0;i<n;i++)
for (j=0;i<n;i++)
if (mat[ i, j]>mx) mx=mat [i,j];
return mx;}
//----------------
public matr tran()
{matr C;
int i,j;
C.n=n;
C.mat=new int[n,n];
for (i=0;i<n;i++)
for (j=0;j<n;j++)
C.mat[i,j]=mat[j,i];
return C;
}
public matr umn(matr D)
{matr C;
int i,j,k;
C.n=n;
C.mat=new int[n,n];
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{C.mat[i,j]=0;
for (k=0;k<n;k++)
C.mat[i,j]+=mat[i,k]*D.mat[k,j];
}
return C;
}
//----------
public int chis0()
{int c=0,i;
for (i=0;i<n;i++)
if (mat[i,i]==0)
c++;
return c;}
//--------------------
public matr summatch(int ch)
{int i,j;
matr C;
C.n=n;
C.mat=new int[n,n];
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
C.mat[i, j] = mat[i, j] * ch;
return C;
6
}
}
Для размещения переменных, которые будут тоступны всем событиям,
опишем отдельный класс и назовем его Global:
class Global
{ public static matr A,B,AT,BT,C,AB,BA;
public static int[,] R;
public static int m,P,Q,max1,max2;
};
Создадим главную форму, на которой разместим поле ввода размера
матрицы, кнопку Принять и две компоненты DataGridView для ввода матриц
и вывода матриц. Форма имеет вид (рис. 27):
7
int i, j;
Global.A.mat = new int[Global.m, Global.m];
for(i=0;i<Global.m;i++)
for (j=0;j<Global.m;j++)
Global.R[i,j]=Convert.ToInt32(this.dataGridView1[j,i].Value);
Global.A.inpmatr(Global.m,Global.R);
Вычисление и вывод результата происходит с помощью кода, который
использует функции структуры:
int i, j;
Global.P = Global.A.chis0();
Global.Q = Global.B.chis0();
if (Global.P< Global.Q)
{ Global.AT = Global.A.tran();
Global.AB = Global.AT.umn(Global.B);
Global.max1=Global.A.max();
Global.C=Global.AB.summatch(Global.max1); }
else
{ Global.BT = Global.B.tran();
Global.BA = Global.BT.umn(Global.A);
Global.max2 = Global.B.max();
Global.C = Global.BA.summatch(Global.max2); };
for(i=0;i<Global.m;i++)
for (j=0;j<Global.m;j++)
this.dataGridView2[j, i].Value=Convert.ToString(Global.C.mat[i,j]);