А.Ф. Деон, Ю.А. Меняев
92
ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 2017. № 2
k++;
Console.Write ( "k = {0,4} ", k );
qWrite ( "x = ", x, N, true );
}
}
MatrixCheck ( MS, M, N, 1 ); // проверка совпадений
Console.WriteLine ( "Matrix of unique sequences" );
MatrixWrite ( MS, M, N ); // монитор матрицы
Console.ReadKey(); // просмотр результат
}
//------------------------------------------------------
static void MatrixAdd ( int[,] MS, ref int M,
int[] x, int N, int a, int c )
{ for ( int j = 0; j < N; j++ ) MS[M, j] = x[j];
MS[M, N] = 0; // номер совпадения
MS[M, N + 1] = a; // параметр a
MS[M, N + 2] = c; // параметр c
M++; // количество последовательностей в матрице
}
//------------------------------------------------------
static void MatrixCheck ( int[,] MS, int M,
int N, int bMS )
{ for ( int i = bMS; i < M; i++ )
for ( uint k = 0; k < i; k++ )
{ uint j = 0;
for ( ; j < N; j++ )
if ( MS[i, j] != MS[k, j] ) break;
if ( j == N ) // совпадение есть
{ MS[i, N] = k + 1; // номер совпадения
break;
}
}
}
//-----------------------------------------------------
static void MatrixWrite ( int[,] MS, int M, int N )
{ for ( int i = 0; i < M; i++ )
{ Console.Write ( "i = {0,5} |", i + 1 );
for ( int j = 0; j < N; j++ )
Console.Write ( "{0,3}", MS[i, j] );
Console.Write ( " | " );
Console.Write ( "{0,3}", MS[i, N] );
Console.Write ( "{0,5}", MS[i, N + 1] );
Console.WriteLine ( "{0,5}", MS[i, N + 2] );
}
}
После выполнения этой программы на мониторе появляется следующий
листинг, который приведен с некоторыми сокращениями — прочерк на месте
пропущенных строк. Общее число последовательностей, сгенерированных по
конгруэнтной и вихревой технологиям, составляет 7 ∙ 24 = 168. Каждая содер-
жит 8 различных чисел. Эти последовательности были занесены в матрицу
MS
последовательно. Вторая часть листинга представляет собой результат провер-
ки. Если строка содержит нуль в первом дополнительном элементе, то это озна-