#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define ROWS 6 // количество строк
#define COLS 5 // количество столбцов
#define NUM 1 // номер столбца, в котором ведем поиск - тут менять номер столбца
//
//функция заполняет массив псевдослучайными данными
void FillMatrix( int* array, const int rows, const int cols, const unsigned randRange, const int shift );
//функция выводит на экран массив
void PrintMatrix( int* const array, const int rows, const int cols );
// функция возвращает наименьшее из всех значений элементов указанного столбца
int FindMinNumCol( int* const array, const int rows, const int cols, int numCol );
int main( void ) {
srand( time( 0 ) ); // засеять генератор случайных чисел
int A[ ROWS ][ COLS ]; // объявляем нашу матрицу
FillMatrix( *A, ROWS, COLS, 101, -50 ); // заполняем матрицу псевдослучайными значениями типа int от -50 до 100 включительно
// выводим матрицу на экран
puts( "Исходная матрица" ); PrintMatrix( *A, ROWS, COLS );
// ищем первую наименьшее из всех значений элементов указанного столбца и выводим на экран
printf( "Наименьшее из всех значений элементов указанного столбца %d равно %d\n", NUM
, FindMinNumCol
( *A
, ROWS
, COLS
, NUM
) );
return EXIT_SUCCESS;
}
void FillMatrix( int* array, const int rows, const int cols, const unsigned randRange, const int shift ) {
size_t i, j;
for ( i = 0; i < rows; ++i )
for ( j = 0; j < cols; ++j )
// заполняем массив псевдослучайными данными
// shift - начальное значение диапазона данных
// randRange - ширина диапазона
array
[ i
* cols
+ j
] = shift
+ rand() % randRange
;}
void PrintMatrix( int* const array, const int rows, const int cols ) {
size_t i, j;
for ( i = 0; i < rows; ++i ) {
for ( j = 0; j < cols; ++j )
printf( "%4d ", array
[ i
* cols
+ j
] );
}
}
int FindMinNumCol( int* const array, const int rows, const int cols, int numCol ) {
if ( numCol >= cols ) // если номер столбца задали больше чем столбцов в массиве
numCol = cols - 1; // то поиск ведем в последнем столбце массива
else if ( numCol < 0 ) // если номер столбца отрицателен
numCol = 0; // то поиск ведем в нулевом столбце массива
size_t i;
int min = array[ numCol ]; // для хранения минимального, минимальным считаем элемент элемент [ 0 ][ numCol ]
for ( i = 1; i < rows; ++i ) // в цикле перебираем все элементы столбца, начиная со строки 1
if ( array[ i * cols + numCol ] < min ) // если очередной элемент меньше чем мы записали в min ранее
min = array[ i * cols + numCol ]; // то записываем очередной элемент в min
return min; // возвращаем результат
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHRpbWUuaD4KIAojZGVmaW5lIFJPV1MgNiAvLyDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0YDQvtC6CiNkZWZpbmUgQ09MUyA1IC8vINC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLQvtC70LHRhtC+0LIKI2RlZmluZSBOVU0gMSAvLyDQvdC+0LzQtdGAINGB0YLQvtC70LHRhtCwLCDQsiDQutC+0YLQvtGA0L7QvCDQstC10LTQtdC8INC/0L7QuNGB0LogLSDRgtGD0YIg0LzQtdC90Y/RgtGMINC90L7QvNC10YAg0YHRgtC+0LvQsdGG0LAKLy8KLy/RhNGD0L3QutGG0LjRjyDQt9Cw0L/QvtC70L3Rj9C10YIg0LzQsNGB0YHQuNCyINC/0YHQtdCy0LTQvtGB0LvRg9GH0LDQudC90YvQvNC4INC00LDQvdC90YvQvNC4CnZvaWQgRmlsbE1hdHJpeCggaW50KiBhcnJheSwgY29uc3QgaW50IHJvd3MsIGNvbnN0IGludCBjb2xzLCBjb25zdCB1bnNpZ25lZCByYW5kUmFuZ2UsIGNvbnN0IGludCBzaGlmdCApOwovL9GE0YPQvdC60YbQuNGPINCy0YvQstC+0LTQuNGCINC90LAg0Y3QutGA0LDQvSDQvNCw0YHRgdC40LIKdm9pZCBQcmludE1hdHJpeCggaW50KiBjb25zdCBhcnJheSwgY29uc3QgaW50IHJvd3MsIGNvbnN0IGludCBjb2xzICk7Ci8vINGE0YPQvdC60YbQuNGPINCy0L7Qt9Cy0YDQsNGJ0LDQtdGCINC90LDQuNC80LXQvdGM0YjQtdC1INC40Lcg0LLRgdC10YUg0LfQvdCw0YfQtdC90LjQuSDRjdC70LXQvNC10L3RgtC+0LIg0YPQutCw0LfQsNC90L3QvtCz0L4g0YHRgtC+0LvQsdGG0LAKaW50IEZpbmRNaW5OdW1Db2woIGludCogY29uc3QgYXJyYXksIGNvbnN0IGludCByb3dzLCBjb25zdCBpbnQgY29scywgaW50IG51bUNvbCApOwogCmludCBtYWluKCB2b2lkICkgewogCiAgICBzcmFuZCggdGltZSggMCApICk7IC8vINC30LDRgdC10Y/RgtGMINCz0LXQvdC10YDQsNGC0L7RgCDRgdC70YPRh9Cw0LnQvdGL0YUg0YfQuNGB0LXQuwogCiAgICBpbnQgQVsgUk9XUyBdWyBDT0xTIF07IC8vINC+0LHRitGP0LLQu9GP0LXQvCDQvdCw0YjRgyDQvNCw0YLRgNC40YbRgwogCiAgICBGaWxsTWF0cml4KCAqQSwgUk9XUywgQ09MUywgMTAxLCAtNTAgKTsgLy8g0LfQsNC/0L7Qu9C90Y/QtdC8INC80LDRgtGA0LjRhtGDINC/0YHQtdCy0LTQvtGB0LvRg9GH0LDQudC90YvQvNC4INC30L3QsNGH0LXQvdC40Y/QvNC4INGC0LjQv9CwIGludCDQvtGCIC01MCDQtNC+IDEwMCDQstC60LvRjtGH0LjRgtC10LvRjNC90L4KIAogICAgLy8g0LLRi9Cy0L7QtNC40Lwg0LzQsNGC0YDQuNGG0YMg0L3QsCDRjdC60YDQsNC9CiAgICBwdXRzKCAi0JjRgdGF0L7QtNC90LDRjyDQvNCw0YLRgNC40YbQsCIgKTsKICAgIFByaW50TWF0cml4KCAqQSwgUk9XUywgQ09MUyApOwogCiAgICAvLyDQuNGJ0LXQvCDQv9C10YDQstGD0Y4g0L3QsNC40LzQtdC90YzRiNC10LUg0LjQtyDQstGB0LXRhSDQt9C90LDRh9C10L3QuNC5INGN0LvQtdC80LXQvdGC0L7QsiDRg9C60LDQt9Cw0L3QvdC+0LPQviDRgdGC0L7Qu9Cx0YbQsCDQuCDQstGL0LLQvtC00LjQvCDQvdCwINGN0LrRgNCw0L0KICAgIHByaW50ZiggItCd0LDQuNC80LXQvdGM0YjQtdC1INC40Lcg0LLRgdC10YUg0LfQvdCw0YfQtdC90LjQuSDRjdC70LXQvNC10L3RgtC+0LIg0YPQutCw0LfQsNC90L3QvtCz0L4g0YHRgtC+0LvQsdGG0LAgJWQg0YDQsNCy0L3QviAlZFxuIiwgTlVNLCBGaW5kTWluTnVtQ29sKCAqQSwgUk9XUywgQ09MUywgTlVNICkgKTsKIAogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQogCnZvaWQgRmlsbE1hdHJpeCggaW50KiBhcnJheSwgY29uc3QgaW50IHJvd3MsIGNvbnN0IGludCBjb2xzLCBjb25zdCB1bnNpZ25lZCByYW5kUmFuZ2UsIGNvbnN0IGludCBzaGlmdCApIHsKICAgIHNpemVfdCBpLCBqOwogICAgZm9yICggaSA9IDA7IGkgPCByb3dzOyArK2kgKQogICAgICAgIGZvciAoIGogPSAwOyBqIDwgY29sczsgKytqICkKICAgICAgICAgICAgLy8g0LfQsNC/0L7Qu9C90Y/QtdC8INC80LDRgdGB0LjQsiDQv9GB0LXQstC00L7RgdC70YPRh9Cw0LnQvdGL0LzQuCDQtNCw0L3QvdGL0LzQuAogICAgICAgICAgICAvLyBzaGlmdCAtINC90LDRh9Cw0LvRjNC90L7QtSDQt9C90LDRh9C10L3QuNC1INC00LjQsNC/0LDQt9C+0L3QsCDQtNCw0L3QvdGL0YUKICAgICAgICAgICAgLy8gcmFuZFJhbmdlIC0g0YjQuNGA0LjQvdCwINC00LjQsNC/0LDQt9C+0L3QsAogICAgICAgICAgICBhcnJheVsgaSAqIGNvbHMgKyBqIF0gPSBzaGlmdCArIHJhbmQoKSAlIHJhbmRSYW5nZTsKfQogCnZvaWQgUHJpbnRNYXRyaXgoIGludCogY29uc3QgYXJyYXksIGNvbnN0IGludCByb3dzLCBjb25zdCBpbnQgY29scyApIHsKICAgIHNpemVfdCBpLCBqOwogICAgZm9yICggaSA9IDA7IGkgPCByb3dzOyArK2kgKSB7CiAKICAgICAgICBmb3IgKCBqID0gMDsgaiA8IGNvbHM7ICsraiApCiAgICAgICAgICAgIHByaW50ZiggIiU0ZCAgIiwgYXJyYXlbIGkgKiBjb2xzICsgaiBdICk7CiAKICAgICAgICBwdXRzKCAiIiApOwogICAgfQp9CiAKaW50IEZpbmRNaW5OdW1Db2woIGludCogY29uc3QgYXJyYXksIGNvbnN0IGludCByb3dzLCBjb25zdCBpbnQgY29scywgaW50IG51bUNvbCApIHsKICAgIGlmICggbnVtQ29sID49IGNvbHMgKSAvLyDQtdGB0LvQuCDQvdC+0LzQtdGAINGB0YLQvtC70LHRhtCwINC30LDQtNCw0LvQuCDQsdC+0LvRjNGI0LUg0YfQtdC8INGB0YLQvtC70LHRhtC+0LIg0LIg0LzQsNGB0YHQuNCy0LUKICAgICAgICBudW1Db2wgPSBjb2xzIC0gMTsgLy8g0YLQviDQv9C+0LjRgdC6INCy0LXQtNC10Lwg0LIg0L/QvtGB0LvQtdC00L3QtdC8INGB0YLQvtC70LHRhtC1INC80LDRgdGB0LjQstCwCiAgICBlbHNlIGlmICggbnVtQ29sIDwgMCApIC8vINC10YHQu9C4INC90L7QvNC10YAg0YHRgtC+0LvQsdGG0LAg0L7RgtGA0LjRhtCw0YLQtdC70LXQvQogICAgICAgIG51bUNvbCA9IDA7IC8vINGC0L4g0L/QvtC40YHQuiDQstC10LTQtdC8INCyINC90YPQu9C10LLQvtC8INGB0YLQvtC70LHRhtC1INC80LDRgdGB0LjQstCwCiAKICAgIHNpemVfdCBpOwogICAgaW50IG1pbiA9IGFycmF5WyBudW1Db2wgXTsgLy8g0LTQu9GPINGF0YDQsNC90LXQvdC40Y8g0LzQuNC90LjQvNCw0LvRjNC90L7Qs9C+LCDQvNC40L3QuNC80LDQu9GM0L3Ri9C8INGB0YfQuNGC0LDQtdC8INGN0LvQtdC80LXQvdGCINGN0LvQtdC80LXQvdGCIFsgMCBdWyBudW1Db2wgXQogICAgZm9yICggaSA9IDE7IGkgPCByb3dzOyArK2kgKSAvLyDQsiDRhtC40LrQu9C1INC/0LXRgNC10LHQuNGA0LDQtdC8INCy0YHQtSDRjdC70LXQvNC10L3RgtGLINGB0YLQvtC70LHRhtCwLCDQvdCw0YfQuNC90LDRjyDRgdC+INGB0YLRgNC+0LrQuCAxCiAgICAgICAgaWYgKCBhcnJheVsgaSAqIGNvbHMgKyBudW1Db2wgXSA8IG1pbiApIC8vINC10YHQu9C4INC+0YfQtdGA0LXQtNC90L7QuSDRjdC70LXQvNC10L3RgiDQvNC10L3RjNGI0LUg0YfQtdC8INC80Ysg0LfQsNC/0LjRgdCw0LvQuCDQsiBtaW4g0YDQsNC90LXQtQogICAgICAgICAgICBtaW4gPSBhcnJheVsgaSAqIGNvbHMgKyBudW1Db2wgXTsgLy8g0YLQviDQt9Cw0L/QuNGB0YvQstCw0LXQvCDQvtGH0LXRgNC10LTQvdC+0Lkg0Y3Qu9C10LzQtdC90YIg0LIgbWluCiAKICAgIHJldHVybiBtaW47IC8vINCy0L7Qt9Cy0YDQsNGJ0LDQtdC8INGA0LXQt9GD0LvRjNGC0LDRggp9Cg==