Многомерный массив, как отобразить оператор else один раз?

#c

#c

Вопрос:

У меня есть эта матрица размером 3 на 3 Matrix[3][3] . Моей задачей было отобразить номер строки матрицы, содержащей как минимум два простых числа, я выполнил эту работу с простыми числами, но проблема в том, что я должен отобразить это сообщение один раз cout << "No row containing at least two prime numbers" << endl; . Из-за итерации, если какая-либо строка не содержит двух простых чисел или только одна строка содержит два простых числа, она отображает мне это три раза / два раза. я хочу, чтобы сообщение отображалось только один раз, если его нет или нет.

КОД ПРОСТОГО ЧИСЛА…

 cout << "ROW NUMBER CONTAINING AT LEAST TWO PRIME NUMBERS" << endl;
    for (int i = 0; i < 3; i  )
    {
        Count = 0;
        for (int j = 0; j < 3; j  )
        {
            Prime = 0;
            for (int k = 2; k < Matrix[i][j]; k  )
            {
                if (Matrix[i][j] % k == 0)
                {
                    Prime = 1;
                    break;
                }
            }
            if (Prime == 0)
            {
                Count  = 1;
            }
        }
        if (Count == 2)
        {
            cout << "ROW NUMBER " << i   1 << endl;
        }
        else
        {
            cout << "NO ROW CONTAINING AT LEAST TWO PRIME NUMBERS" << endl;
        }
    }
  

Ответ №1:

Просто добавьте еще одну переменную count

 int row_count = 0;
for (int i = 0; i < 3; i  )
{

    ...

    if (Count == 2)
    {
        cout << "ROW NUMBER " << i   1 << endl;
        row_count  = 1;
    }
}
if (row_count == 0)
    cout << "NO ROW CONTAINING AT LEAST TWO PRIME NUMBERS" << endl;
  

Не самый красивый код в word, но он выполняет свою работу.

Кстати, как минимум два простых числа, так что

 if (Count == 2)
  

должно быть

 if (Count >= 2)
  

Ответ №2:

Используйте целое число как флаг.

     int flag = 0;
    cout << "ROW NUMBER CONTAINING AT LEAST TWO PRIME NUMBERS" << endl;
    for (int i = 0; i < 3; i  )
    {
        Count = 0;
        for (int j = 0; j < 3; j  )
        {
            Prime = 0;
            for (int k = 2; k < Matrix[i][j]; k  )
            {
                if (Matrix[i][j] % k == 0)
                {
                    Prime = 1;
                    break;
                }
            }
            if (Prime == 0)
            {
                Count  = 1;
            }
        }
        if (Count == 2)
        {
            cout << "ROW NUMBER " << i   1 << endl;
        }
        else
        {
            flag  ;
        }
    }
    if(flag == 3)
    {
        cout << "NO ROW CONTAINING AT LEAST TWO PRIME NUMBERS" << endl;
    }
  

Комментарии:

1. Это не решает проблему OP. Сообщение «НЕТ СТРОКИ» будет показано, если есть какая-либо строка, которая не содержит двух простых чисел.