| Код | #include < stdio.h > #include < time.h >
int main() { // запускаем генератор случайных чисел srand( ( unsigned ) time( NULL ) );
int ** matr, ROWS, COLS, count, i, j; int rowBeg, rowEnd, colBeg, colEnd;
// запрашиваем у пользователя размеры матрицы printf( "Введите количество строк матрицы: " ); scanf( "%d", &ROWS ); printf( "Введите количество столбцов матрицы: " ); scanf( "%d", &COLS );
// выделяем память для динамической матрицы matr = ( int ** ) malloc( ROWS * sizeof( int * ) ); for( i = 0; i < ROWS; i++ ) matr[i] = ( int * ) malloc( COLS * sizeof( int ) );
printf( "\nДля матрицы : %d x %d\n\n", ROWS, COLS );
// Инициализируем матрицу случайными значениями в диапазоне 1 - 50 for( i = 0; i < ROWS; i++ ) for( j = 0; j < COLS; j++ ) matr[i][j] = rand() % 50 + 1;
// Вывод матрицы for( i = 0; i < ROWS; i++ ) { for( j = 0; j < COLS; j++ ) printf( "%3d", matr[i][j] ); puts( "" ); }
// Вывод значений матрицы по спирали puts( "\n\n\tвывод значений по спирали:\n" );
rowBeg = 0; rowEnd = ROWS - 1; colBeg = 0; colEnd = COLS - 1; count = ROWS * COLS;
while( count ) { for( i = colBeg; i <= colEnd && count; i++, count-- ) printf( "%3d", matr[rowBeg][i] ); rowBeg++; for( i = rowBeg; i <= rowEnd && count; i++, count-- ) printf( "%3d", matr[i][colEnd] ); colEnd--; for( i = colEnd; i >= colBeg && count; i--, count-- ) printf( "%3d", matr[rowEnd][i] ); rowEnd--; for( i = rowEnd; i >= rowBeg && count; i--, count-- ) printf( "%3d", matr[i][colBeg] ); colBeg++; } puts( "" );
// освобождаем память for( i = 0; i < ROWS; i++ ) free( matr[i] ); free( matr );
return 0; } |
|