#include <stdio.h>
#include <stdlib.h>
// Создание двумерной матрицы, ибо далеко
// не все компиляторы поддерживают VLA даже в C...
int ** makeMatrix(unsigned int n, unsigned int m)
{
// Можно (и нужно) дописать проверки, что память выделена.
// Для краткости не стал.
int ** a
= malloc(sizeof(int*)*n
); for(unsigned int i = 0; i < n; ++i)
return a;
}
// Заполнение матрицы
void input(int ** A, unsigned int rows, unsigned int cols)
{
for (unsigned int i = 0; i < rows; i++)
for (unsigned int j = 0; j < cols; j++)
{
}
}
// Подсчет количества отрицательных элементов в
// столбце colNo матрицы A
int minus_count(int ** A, unsigned int rows, unsigned int colNo)
{
int cnt = 0;
for(unsigned int i = 0; i < rows; ++i)
cnt += (A[i][colNo] < 0); // Для отрицательного дает 1
return cnt;
}
// Проверка всех столбцов и вывод номеров тех, где ровно
// два отрицательных элемента
void check_2minus(int ** A, unsigned int rows, unsigned int cols)
{
for(unsigned int i = 0; i < cols; ++i)
if (minus_count(A,rows,i) == 2)
printf("Столбец %d содержит два отрицательных элемента\n",i
); }
// Функция освобождения памяти
void freeMatrix(int ** A, unsigned int rows)
{
for(unsigned int i
= 0; i
< rows
; ++i
) free(A
[i
]); }
int main() {
unsigned int n,m;
printf("Введите количество строк матрицы B / столбцов матрицы C: "); printf("Введите количество столбцов матрицы B / строк матрицы C: ");
int ** B = makeMatrix(n,m);
int ** C = makeMatrix(m,n);
printf("Заполните первый массив: \n"); input(B, n, m);
printf("Заполните второй массив: \n"); input(C, m, n);
puts("\n"); // "Просвет" перед выводом столбцов первой матрицы // Проверка первого массива
check_2minus(B, n, m);
puts("\n"); // "Просвет" перед выводом столбцов второй матрицы // Проверка второго массива
check_2minus(C, m, n);
// Освобождение памяти
freeMatrix(B, n);
freeMatrix(C, m);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vINCh0L7Qt9C00LDQvdC40LUg0LTQstGD0LzQtdGA0L3QvtC5INC80LDRgtGA0LjRhtGLLCDQuNCx0L4g0LTQsNC70LXQutC+Ci8vINC90LUg0LLRgdC1INC60L7QvNC/0LjQu9GP0YLQvtGA0Ysg0L/QvtC00LTQtdGA0LbQuNCy0LDRjtGCIFZMQSDQtNCw0LbQtSDQsiBDLi4uCmludCAqKiBtYWtlTWF0cml4KHVuc2lnbmVkIGludCBuLCB1bnNpZ25lZCBpbnQgbSkKewogICAgLy8g0JzQvtC20L3QviAo0Lgg0L3Rg9C20L3Qvikg0LTQvtC/0LjRgdCw0YLRjCDQv9GA0L7QstC10YDQutC4LCDRh9GC0L4g0L/QsNC80Y/RgtGMINCy0YvQtNC10LvQtdC90LAuCiAgICAvLyDQlNC70Y8g0LrRgNCw0YLQutC+0YHRgtC4INC90LUg0YHRgtCw0LsuCiAgICBpbnQgKiogYSA9IG1hbGxvYyhzaXplb2YoaW50Kikqbik7CiAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbjsgKytpKQogICAgICAgIGFbaV0gPSBtYWxsb2Moc2l6ZW9mKGludCkqbSk7CiAgICByZXR1cm4gYTsKfQoKLy8g0JfQsNC/0L7Qu9C90LXQvdC40LUg0LzQsNGC0YDQuNGG0YsKdm9pZCBpbnB1dChpbnQgKiogQSwgdW5zaWduZWQgaW50IHJvd3MsIHVuc2lnbmVkIGludCBjb2xzKQp7CiAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHJvd3M7IGkrKykKICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IGNvbHM7IGorKykKICAgICAgICB7CiAgICAgICAgICAgIHByaW50ZigiYVsldV1bJXVdID0gIiwgaSwgaik7CiAgICAgICAgICAgIHNjYW5mKCIlZCIsICZBW2ldW2pdKTsKICAgICAgICB9Cn0KCi8vINCf0L7QtNGB0YfQtdGCINC60L7Qu9C40YfQtdGB0YLQstCwINC+0YLRgNC40YbQsNGC0LXQu9GM0L3Ri9GFINGN0LvQtdC80LXQvdGC0L7QsiDQsgovLyDRgdGC0L7Qu9Cx0YbQtSBjb2xObyDQvNCw0YLRgNC40YbRiyBBCmludCBtaW51c19jb3VudChpbnQgKiogQSwgdW5zaWduZWQgaW50IHJvd3MsIHVuc2lnbmVkIGludCBjb2xObykKewogICAgaW50IGNudCA9IDA7CiAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcm93czsgKytpKQogICAgICAgIGNudCArPSAoQVtpXVtjb2xOb10gPCAwKTsgIC8vINCU0LvRjyDQvtGC0YDQuNGG0LDRgtC10LvRjNC90L7Qs9C+INC00LDQtdGCIDEKICAgIHJldHVybiBjbnQ7Cn0KCi8vINCf0YDQvtCy0LXRgNC60LAg0LLRgdC10YUg0YHRgtC+0LvQsdGG0L7QsiDQuCDQstGL0LLQvtC0INC90L7QvNC10YDQvtCyINGC0LXRhSwg0LPQtNC1INGA0L7QstC90L4KLy8g0LTQstCwINC+0YLRgNC40YbQsNGC0LXQu9GM0L3Ri9GFINGN0LvQtdC80LXQvdGC0LAKdm9pZCBjaGVja18ybWludXMoaW50ICoqIEEsIHVuc2lnbmVkIGludCByb3dzLCB1bnNpZ25lZCBpbnQgY29scykKewogICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNvbHM7ICsraSkKICAgICAgICBpZiAobWludXNfY291bnQoQSxyb3dzLGkpID09IDIpCiAgICAgICAgICAgIHByaW50Zigi0KHRgtC+0LvQsdC10YYgJWQg0YHQvtC00LXRgNC20LjRgiDQtNCy0LAg0L7RgtGA0LjRhtCw0YLQtdC70YzQvdGL0YUg0Y3Qu9C10LzQtdC90YLQsFxuIixpKTsKfQoKLy8g0KTRg9C90LrRhtC40Y8g0L7RgdCy0L7QsdC+0LbQtNC10L3QuNGPINC/0LDQvNGP0YLQuAp2b2lkIGZyZWVNYXRyaXgoaW50ICoqIEEsIHVuc2lnbmVkIGludCByb3dzKQp7CiAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcm93czsgKytpKSBmcmVlKEFbaV0pOwogICAgZnJlZShBKTsKfQoKaW50IG1haW4oKSB7CiAgICB1bnNpZ25lZCBpbnQgbixtOwogICAgcHJpbnRmKCLQktCy0LXQtNC40YLQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0YDQvtC6INC80LDRgtGA0LjRhtGLIEIgLyDRgdGC0L7Qu9Cx0YbQvtCyINC80LDRgtGA0LjRhtGLIEM6ICIpOwogICAgc2NhbmYoIiV1IiwgJm4pOwogICAgcHJpbnRmKCLQktCy0LXQtNC40YLQtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRgdGC0L7Qu9Cx0YbQvtCyINC80LDRgtGA0LjRhtGLIEIgLyDRgdGC0YDQvtC6INC80LDRgtGA0LjRhtGLIEM6ICIpOwogICAgc2NhbmYoIiV1IiwgJm0pOwoKICAgIGludCAqKiBCID0gbWFrZU1hdHJpeChuLG0pOwogICAgaW50ICoqIEMgPSBtYWtlTWF0cml4KG0sbik7CgogICAgcHJpbnRmKCLQl9Cw0L/QvtC70L3QuNGC0LUg0L/QtdGA0LLRi9C5INC80LDRgdGB0LjQsjogXG4iKTsKICAgIGlucHV0KEIsIG4sIG0pOwoKICAgIHByaW50Zigi0JfQsNC/0L7Qu9C90LjRgtC1INCy0YLQvtGA0L7QuSDQvNCw0YHRgdC40LI6IFxuIik7CiAgICBpbnB1dChDLCBtLCBuKTsKCiAgICBwdXRzKCJcbiIpOyAgLy8gItCf0YDQvtGB0LLQtdGCIiDQv9C10YDQtdC0INCy0YvQstC+0LTQvtC8INGB0YLQvtC70LHRhtC+0LIg0L/QtdGA0LLQvtC5INC80LDRgtGA0LjRhtGLCiAgICAvLyDQn9GA0L7QstC10YDQutCwINC/0LXRgNCy0L7Qs9C+INC80LDRgdGB0LjQstCwCiAgICBjaGVja18ybWludXMoQiwgbiwgbSk7CgogICAgcHV0cygiXG4iKTsgIC8vICLQn9GA0L7RgdCy0LXRgiIg0L/QtdGA0LXQtCDQstGL0LLQvtC00L7QvCDRgdGC0L7Qu9Cx0YbQvtCyINCy0YLQvtGA0L7QuSDQvNCw0YLRgNC40YbRiwogICAgLy8g0J/RgNC+0LLQtdGA0LrQsCDQstGC0L7RgNC+0LPQviDQvNCw0YHRgdC40LLQsAogICAgY2hlY2tfMm1pbnVzKEMsIG0sIG4pOwoKICAgIC8vINCe0YHQstC+0LHQvtC20LTQtdC90LjQtSDQv9Cw0LzRj9GC0LgKICAgIGZyZWVNYXRyaXgoQiwgbik7CiAgICBmcmVlTWF0cml4KEMsIG0pOwoKfQo=