Дан двумерны массив MxN, заполненный случ числами от 1 до 4. Найти № строк, все элементы которых четные, eсли таких нет, то вывести сообщение об этом
Код работает, но я не понимаю как сделать, что бы сообщение вывелось один раз, а не на каждую строку
Дан двумерный массив MxN, заполненный случайными числами от 1 до 4. Найти номера строк, все элементы которых четные. Если таких нет, то вывести сообщение об этом.
#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>
//Дан двумерный массив MxN, заполненный случайными числами от 1 до 4.
//Найти номера строк, все элементы которых четные.
//Если таких нет, то вывести сообщение об этом.
int main() {
setlocale(LC_ALL,"");
int i, j, n, m, rand(), EvenIntegerRow;
printf("Введите размер массива, разделенный пробелом (строки и столбцы): ");
scanf("%d%d", &n, &m);
int mxn[n][m];
srand(time(NULL));
//заполнение массива
for(i=0; i<n; ++i) {
for(j=0; j<m; ++j) {
mxn[i][j] = 1 + rand() % 4;
}
}
// вывод массива
for(i=0; i<n; ++i){
for(j=0; j<m; ++j) {
printf("%d\t", mxn[i][j]);
}
printf("\n");
}
int count = 0; // количество четных на текущей строке
// поиск строки четных элементов
for(i=0; i<n; ++i)
{
for(j=0; j<m; ++j)
{
if(mxn[i][j] % 2 == 0)
{
count++;
}
}
if(count==n)
{
EvenIntegerRow = i;
printf("\nСтрока все элементы которой четные: %d", EvenIntegerRow);
}
else
printf("\nТаких строк нет");
}
getchar();
return 0;
}
Ответы (1 шт):
Автор решения: kr1va
→ Ссылка
Просто заведите флаг для проверки, если была найдена хотя бы 1 строка, то последнее условие никогда не выполнится и сообщение не выведется. Наоборот, если ни одной строки не найдено, то последнее условие выполнится.
bool find = false;
for (i = 0; i < n; ++i)
{
for (j = 0; j < m; ++j)
{
if (mxn[i][j] % 2 == 0)
{
count++;
}
}
if (count == n)
{
find = true;
EvenIntegerRow = i;
printf("\nСтрока все элементы которой четные: %d", EvenIntegerRow);
}
}
if (!find)
{
printf("\nТаких строк нет\n");
}