0 / 0 / 0
Регистрация: 04.07.2019
Сообщений: 22
1

Первый четный элемент двумерного массива

13.08.2019, 17:11. Показов 1238. Ответов 7

Почему не выводится первый четный элемент в массиве? как то в хаотичном порядке каждый раз выдает четное число
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
int main()
{
setlocale(LC_ALL, "rus");
 
int arr[3][3];
int chet;
cout << "Ввод массива"<<endl;
for (int i=0;i<3;i++)
{
    for (int j=0;j<3;j++)
    {
        cin >> arr[i][j];
    }
}
 
cout << "Массив: "<<endl;
for (int i=0;i<3;i++)
{
    for (int j=0;j<3;j++)
    {
        cout << setw(4) <<arr[i][j]<<" ";
    }
    cout <<endl;
}
 
for (int i=0;i<3;i++)
{
    for (int j=0;j<3;j++)
    {
        if (arr[i][j] % 2 == 0)
        {
            chet = arr[i][j];break;
        }
 
    }
}
cout << chet << endl;
 
 return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.08.2019, 17:11
Ответы с готовыми решениями:

Как определить первый с конца четный элемент двумерного массива?
двумерный массив. Как определить первый с конца четный элемент двумерного массива? Как написать...

Поменять местами первый максимальный четный элемент массива и первый минимальный нечетный элемент
Помогите начало знаю как сделать а дальше нет #include&lt;iostream&gt; #include &lt;stdlib.h&gt; #include...

Найдите наименьший четный элемент массива. Если такого нет, то выведите первый элемент
Найдите наименьший четный элемент массива. Если такого нет, то выведите первый элемент.

Найдите наименьший чётный элемент массива. Если такого нет то выведите первый элемент
Найдите наименьший чётный элемент массива. Если такого нет то выведите первый элемент Решите...

7
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
13.08.2019, 17:18 2
Цитата Сообщение от M_K_ Посмотреть сообщение
Почему не выводится первый четный элемент в массиве? как то в хаотичном порядке каждый раз выдает четное число
А что должно выводится?
И какой именно элемент считается первым - по строке или по столбцу?
0
1699 / 900 / 369
Регистрация: 11.10.2018
Сообщений: 4,720
13.08.2019, 17:21 3
Потому что break выходит только из одного цикла for - внутреннего. Наружный цикл продолжает работать и дальше ищет четные числа. - Из-за этого и ошибки.
0
0 / 0 / 0
Регистрация: 04.07.2019
Сообщений: 22
13.08.2019, 17:21  [ТС] 4
нужен первый четный элемент по строкам
0
1699 / 900 / 369
Регистрация: 11.10.2018
Сообщений: 4,720
13.08.2019, 17:27 5
Нужен. Думайте, что делать нужно. Заведите переменную:
C++
1
bool Enabled = true;
Потом вместо break напишите Enabled = false;
И в обоих циклах for - в его условиях добавится фраза:
C++
1
for(int i = 0; ((i < 3) && Enabled); i++)
1
172 / 147 / 26
Регистрация: 13.08.2019
Сообщений: 576
13.08.2019, 18:27 6
После нахождения четного элемента завершайте работу обоих циклов: и вложенного и внешнего.
Можете перед break в явном виде присвоить значение i = 5(любое бОльшее значение, чем указано у вас в для внешнего цикла).
Можете повешать отдельный флаг и вставлять по нему true/false.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Пример:
int Search_even(int number)
{
 
        if( number%2 == 0)
        {
            return number;
        }
        else
        {
            return -1;
        }
}
 
 
int main ()
{
    int test_array [4][5] = { {11,21,33,41,51},
                            {65,74,82,91,10},
                            {11,12,13,14,15},
                            {16,17,18,19,20} };
    int even_val = 0;
    for(int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 5; j++)
        {
            cout << " " << test_array[i][j];
        }
        cout << endl;
    }
 
    for(int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 5; j++)
        {
          even_val =  Search_even(test_array[i][j]);
          if(even_val > 0)
          {
              cout << even_val;
              i = 5;
              break;
          }
        }
 
    }
 
}
1
6320 / 4296 / 2464
Регистрация: 18.12.2017
Сообщений: 13,361
13.08.2019, 19:29 7
M_K_, можно поставить ещё один break (с условием) из внешнего цикла и всё будет работать, но есть вариант компактнее:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
 
int main()
{    
    const int n=3;
    int a[n][n], k=0, first_even=0;
    
    cout << "Enter matrix " << n << "x" << n << ":\n";    
    for (int i = 0; i < n; i++)    
    {
    for (int j = 0; j < n; j++)
        {
        cin >> a[i][j]; 
        if (a[i][j]%2==0 && k==0) {k=1;first_even=a[i][j];}
        }
    }
    
    if (k) cout << "first even = " << first_even << "\n";
    else cout << "even elements are absent\n";    
    
system("pause");
return 0;
}
1
6737 / 4537 / 1838
Регистрация: 07.05.2019
Сообщений: 13,725
Записей в блоге: 1
13.08.2019, 20:49 8
Цитата Сообщение от M_K_ Посмотреть сообщение
нужен первый четный элемент по строкам
У тебя по столбцам сделано, i - строки, j - столбцы. Вынеси эти циклы в отдельную функцию и сделай return вместо break
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int find_first_even(int arr[][3])
{
    for (int i = 0; i < 3; i++)
        for (int j = 0; j < 3; j++)
        { 
            const int x = arr[j][i];
            if (x % 2 == 0)
                return x;
        }
 
    return -1;
}
 
...............
cout << find_first_even(arr) << endl;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.08.2019, 20:49

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Удалить первый чётный элемент массива
Задание:Удалить элемент с заданным номером. На примере этого: Удалить первый чётный элемент:...

Неверно выводится первый четный элемент массива
Почему-то выдает как первое четное Ноль. Подскажите - в чем ошибка? int a,n,i,x; int main()...

Найти первый четный элемент одномерного массива
как найти первый четный элемент одномерного массива целых чисели (10 элем.)?

Из заданного массива удалить первый чётный положительный элемент
Создать одномерный динамический массив. Размер массива вводится с клавиатуры. 1.Из полученного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.