Проверка двумерного массива на наличие ряда неположительных чисел

 #include <iostream>
using namespace std;
#include <stdlib.h>

int main()
{
    int stolbiki;  //столбики
    int radi; //ряды
    int numbers[20][20];
    float srand(time(NULL));
    for (stolbiki = 1; stolbiki < 21; ++stolbiki) 
    {  
        
        for (radi = 1; radi < 21; ++radi)
        {
            numbers[radi][20] = rand() % 41 - 20;
            cout << numbers[radi][20] << "  ";
        }
        cout <<endl ;
    }
   
} 

По условию надо создать таблицу 20 на 20 со случайными числами, а зачем проверить столбики на условие: содержит ли какой-то столбик только неположительные числа, если да - то вывести номер столбика, если нет - то к примеру соответствующую надпись.

Могу предположить, что неположительные числа одного столбика можно помещать в отдельный массив, а затем подсчитав количество элементов в нем и проверив на равность 20 (всего элементов в столбике именно 20), вывести номер этого столбика.

Вероятность 20 неположительных чисел подряд маленькая, но это не важно.


Ответы (1 шт):

Автор решения: MBo

Во-первых, вы неправильно работаете с массивом, ведь нумерация идёт с нуля, а не с единицы.

Теперь по сути вопроса. Ни к чему дополнительное хранилище. Просто обходите массив по столбикам (кстати, в заголовке написано - по рядам), перед циклом по столбику установив flag=0. Если встретили положительное число, устанавливаете флаг в 1 и делаете break. После цикла выводите сообщение в зависимости от флага.

P.S. для того, чтобы вероятность таких столбиков была заметной, можно сдвинуть диапазон генерации, например, отнимать 36

→ Ссылка