Untitled
c_cpp
2 months ago
3.2 kB
0
Indexable
Never
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> // функция заполнения массива void FillArr( int *a, const int n ); // int a[] // функция вывода массива void PrintArr( const int* a, const int r, const int c ); // функция поиска минимального в указанной строке int GetMinRow( const int* a, const int c, const int numRow ); // функция сдвига столбца вниз void ShiftLoopColDown(int* a, const int r, const int c, const int numCol); int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); const int rows = 5, cols = 6; const int size = rows * cols; // 1 4 5 6 2 0 // 3 1 7 9 1 5 // 0 4 2 8 6 3 // 4 6 2 7 9 1 // 3 1 7 9 1 8 // 1 4 5 6 2 0 3 1 7 9 1 5 0 4 2 8 6 3 4 6 2 7 9 1 3 1 7 9 1 8 // i = 1, j = 2 // 8 = i * cols + j // i * cols = количество элементов во всех строках ДО строки с искомым элементом // + j = сколько элементов было ДО искомого элемента в ТЕКУЩЕЙ строке int arr[ size ]; FillArr( arr, size ); PrintArr( arr, rows, cols ); // пользователь вводит НОМЕР строки для поиска минимального значения printf("введите номер строки в которой необходимо найти минимальный элемент: "); int numRow; scanf ("%d", &numRow); --numRow; printf("минимальное значение = %d\n", GetMinRow(arr, cols, numRow) ); // пользователь вводит номер столбца, который необходимо сдвинуть циклически вниз printf("введите номер столбца, который необходимо сдвинуть циклически вниз: "); int numCol; scanf ("%d", &numCol); --numCol; PrintArr( arr, rows, cols ); return 0; } void PrintArr( const int* a, const int r, const int c ) { int i, j; for( i = 0; i < r; ++i ) { for( j = 0; j < c; ++j ) printf("%5d", a[ i * c + j ] ); puts(""); } } void FillArr( int *a, const int n ) { int i; for( i = 0; i < n; ++i ) a[ i ] = rand() % 101 - 50; } int GetMinRow( const int* a, const int c, const int numRow ) { int minNum = a[ numRow * c ], i; for( i = 1; i < c; ++i ) if ( a[ numRow * c + i ] < minNum ) minNum = a [ numRow * c + i ]; return minNum; } // 1 4 5 [6] 2 0 // 3 1 7 [9] 1 5 // 0 4 2 [8] 6 3 // 4 6 2 [7] 9 1 // 3 1 7 [9] 1 8 // 1 4 5 6 2 0 3 1 7 9 1 5 0 4 2 8 6 3 4 6 2 7 9 1 3 1 7 9 1 8 // 8 = i * cols + j void ShiftLoopColDown(int* a, const int r, const int c, const int numCol) { int last = a[ ( r - 1 ) * c + numCol ], i; // 9 for( i = r-1; i > 1; --i ) { a[ (i * c) + numCol ] = a[ ((( i - 1 ) * c) + numCol) ]; } a[ numCol ] = last; }