Как найти четное число в матрице с

PashaMorgan

0 / 0 / 1

Регистрация: 03.06.2013

Сообщений: 13

1

Определить четные значения в матрице

05.11.2013, 17:07. Показов 1213. Ответов 4

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

В целочисленной матрице размерами N*M определить количество элементов, которые имеют четные значения (N и M не больше 10). Матрицу сформировать из случайных чисел в диапазоне от 0 до 100.

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
#include "time.h"
#include "clocale"
#include "iostream"
using namespace std;
int main()
{
    int n,i,j,tmp=0;
    cout<<"n="; cin>>n;  
    int a[n][n];
    
    //âêëþ÷èì ðàíäîì
    srand(time(NULL));
    // çàïîëíåíèå ìàññèâà
    
      for(i=0;i<n;i++)  
       {
         for(j=0;j<n;j++)
         {
        a[i][j]=rand()%100-0;
       cout<<a[i][j]<<" ";
       }
        cout<<"rn";
        
         //ïîèñê ÷åòíûõ çíà÷åíèé ìàòðèöû
         for(i=0;i<n;i++)  
       {
         for(j=0;j<n;j++)
         {
            if ( a[i][j] % 2 == 0) tmp++ ;
            cout<<tmp;
            }
            }   
}
        
         system("PAUSE");
         return 0;
}



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

05.11.2013, 17:07

Ответы с готовыми решениями:

В матрице определить четные элементы, имеющие нечетную сумму индексов.
Дана матрица М(7,4). Определить четные элементы, имеющие нечетную сумму индексов.

В заданной матрице определить среднее арифметическое значение положительных элементов столбиков, имеющих четные индексы
В заданной матрице S (1 … 5,1..4) определить среднее арифметическое значение положительных…

Определить количество элементов, имеющих четные значения
Помогите решить бесталковому студенту, только начинаю разбираться в c+, не получается, желательно с…

Определить произведение элементов матрицы, имеющих четные значения
Помогите решить задачку:

Задания на двумерные массивы
Дан двумерный массив размерностью N x M…

4

Anton_Kretov

89 / 51 / 15

Регистрация: 26.06.2013

Сообщений: 179

05.11.2013, 17:42

2

Вот, протестите мой вариант, код выполняет ваше условие.

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
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
const int N = 10; //Менять тут
const int M = 10; //Менять тут
 
//even - четный по-английский
int findEvenNumsInMatrix(int testMatrix[N][M]);
 
int main()
{
    int testMatrix[N][M];
 
 
    srand(time(NULL));
    for(int i = 0; i < N; i++) {
        for(int j = 0; j < M; j++) {
            testMatrix[i][j] = 50 - rand() % 100; //Тут менять наполнение массива
            cout << "n" << "testMatrix[" << i << "][" << j << "] = " << testMatrix[i][j];
        }
    }
 
    cout << "n" << "Amount of Even numbers in testMatrix is " << findEvenNumsInMatrix(testMatrix);
    return 0;
}
 
int findEvenNumsInMatrix(int testMatrix[N][M]) {
    int amountOfEvenNums = 0;
    for(int i = 0; i < N; i++) {
        for(int j = 0; j < M; j++) {
            if(testMatrix[i][j] % 2 == 0) amountOfEvenNums++;
        }
    }
 
    return amountOfEvenNums;
}



1



PashaMorgan

0 / 0 / 1

Регистрация: 03.06.2013

Сообщений: 13

05.11.2013, 17:45

 [ТС]

3

Цитата
Сообщение от Anton_Kretov
Посмотреть сообщение

Вот, протестите мой вариант, код выполняет ваше условие.

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
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
const int N = 10; //Менять тут
const int M = 10; //Менять тут
 
//even - четный по-английский
int findEvenNumsInMatrix(int testMatrix[N][M]);
 
int main()
{
    int testMatrix[N][M];
 
 
    srand(time(NULL));
    for(int i = 0; i < N; i++) {
        for(int j = 0; j < M; j++) {
            testMatrix[i][j] = 50 - rand() % 100; //Тут менять наполнение массива
            cout << "n" << "testMatrix[" << i << "][" << j << "] = " << testMatrix[i][j];
        }
    }
 
    cout << "n" << "Amount of Even numbers in testMatrix is " << findEvenNumsInMatrix(testMatrix);
    return 0;
}
 
int findEvenNumsInMatrix(int testMatrix[N][M]) {
    int amountOfEvenNums = 0;
    for(int i = 0; i < N; i++) {
        for(int j = 0; j < M; j++) {
            if(testMatrix[i][j] % 2 == 0) amountOfEvenNums++;
        }
    }
 
    return amountOfEvenNums;
}

Спасибо Большое,буду изучать)



0



89 / 51 / 15

Регистрация: 26.06.2013

Сообщений: 179

05.11.2013, 17:46

4

Цитата
Сообщение от PashaMorgan
Посмотреть сообщение

Спасибо Большое,буду изучать)

Рад помочь! :3



0



TSed

20 / 20 / 15

Регистрация: 22.01.2013

Сообщений: 76

05.11.2013, 18:01

5

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
41
42
43
44
45
46
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main(){
    int n, m;
    srand(time(0));
 
    while(true){
        cout<<"N->";
        cin>>n;
        cout<<"M->";
        cin>>m;
        if ( ((n>0) && (n<=10)) && ((m>0) && (n<=10)) )
            break;
        cout<<"Wrong M or N"<<endl;
    }
 
    int **arr = new int *[n];
    for (int i = 0; i < m; i++)
        arr[i] = new int[n];
    
    for (int i = 0; i < m; i++){
        for (int j = 0; j < n; j++){
            arr[i][j] = rand()%100;
        }
    }
    
    int count = 0;
 
    for (int i = 0; i < m; i++){
        for (int j = 0; j < n; j++){
            if(arr[i][j]%2 == 0)
                count++;
        }
    }
 
    cout<<"Result->"<<count<<endl;
    system("pause");
    for (int i = 0; i < m; i++)
        delete []arr[i];
    delete [] arr;
 
    return 0;
}



0



Есть матрица 10*10 с целыми числами. Необходимо узнать количество чётных чисел в ней:

   #include <stdio.h>
#include <stdlib.h>

#define ROWS 10
#define COLS 10

int main(void)
{
   int array[ROWS][COLS];
   for (int i = 0; i < ROWS; i++)
   {
       for (int j = 0; j < COLS; j++)
       {
           printf("array[%d][%d]=", i, j);
           scanf("%d", &array[i][j]);
       }
   }
   printf("n");
   for(int i = 0; i < ROWS; i++)
   {
       for(int j = 0; j < COLS; j++)
       {
           printf("%d ", array[i][j]);

       }
       printf("n");
   }




}

Duracell's user avatar

Duracell

1,9913 золотых знака16 серебряных знаков33 бронзовых знака

задан 30 дек 2022 в 17:05

Pavlik25's user avatar

1

  1. Добавляем в начало переменную, например int count = 0;
  2. Во втором цикле (вместо этого printf("%d ", array[i][j]);) проверяем делится ли число на 2 (array[i][j] % 2 == 0)
  3. Если число делится на 2: count++;
  4. Выводим count

ответ дан 30 дек 2022 в 17:26

SurfaceStack's user avatar

SurfaceStackSurfaceStack

8574 серебряных знака23 бронзовых знака

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

Ниже приведен пример кода, который решает задачу:

#include <stdio.h>
#include <stdlib.h>

#define ROWS 10
#define COLS 10

int main(void)
{
   int array[ROWS][COLS];
   for (int i = 0; i < ROWS; i++)
   {
       for (int j = 0; j < COLS; j++)
       {
           printf("array[%d][%d]=", i, j);
           scanf("%d", &array[i][j]);
       }
   }
   printf("n");
   int evenCount = 0; // счетчик четных чисел
   for(int i = 0; i < ROWS; i++)
   {
       for(int j = 0; j < COLS; j++)
       {
           if (array[i][j] % 2 == 0) // если число четное
           {
               evenCount++; // увеличиваем счетчик
           }
       }
   }
   printf("Количество четных чисел: %dn", evenCount);
   return 0;
}

ответ дан 30 дек 2022 в 17:30

hedgehogues's user avatar

hedgehogueshedgehogues

9,2218 золотых знаков44 серебряных знака93 бронзовых знака

Второй цикл не нужен

#include <stdio.h>
#include <stdlib.h>

#define ROWS 10
#define COLS 10
int evenCount = 0; // счетчик четных чисел
int main(void)
    {
    int array[ROWS][COLS];
    for (int i = 0; i < ROWS; i++)
        {
        for (int j = 0; j < COLS; j++)
            {
            printf("array[%d][%d]=", i, j);
            scanf("%d", &array[i][j]);
            if (array[i][j] % 2 == 0) evenCount++; // если число четное увеличиваем счетчик
            }
        }
    
    printf("nКоличество четных чисел: %dn", evenCount);
    return 0;
    }

ответ дан 31 дек 2022 в 14:52

Редиска's user avatar

In this function I want to get even numbers in matrix. My parameters are a bidimensional pointer and the dimensions of matrix.
Anyone could help me? Where I got wrong…

    subl    $12, %esp                    # 12 bytes to local variables

    movl    $0, -12(%ebp)                # counter = 0
    movl    8(%ebp), %esi               # **m
    movl    $0, %ebx                     # i = 0
it_rows:
    cmpl    12(%ebp), %ebx              # while(i != y)
    jz      end                         # if not equal jump
    leal    (%esi, %ebx, 4), %edi       # m+i
    movl    $0, %ecx                     # j = 0
it_col:
    cmpl    16(%ebp), %ecx              # while(j != k)
    jz      next_row
    movl    (%edi, %ecx, 4), %eax       # *(*(m+i)+j)
    andl    $0x1, %eax               # LSB
    cmpl    $0, %eax                     # LSB == 0
    jnz     not_even
    movl    -12(%ebp), %eax             # counter
    incl    %eax                        # counter++
    movl    %eax, -12(%ebp)             # update local variable
not_even:
    incl    %ecx                        # j++
    jmp     it_col
next_row:
    incl    %ebx                        # i++
    jmp     it_rows

My implementation in C:

int count_even_matrix(int **m, int y, int k) {
    int i, j;
    int c = 0;
    for(i = 0; i < y; i++) {
        for(j = 0; j < k; j++) {
            if(*(*(m+i)+j)%2 == 0) {
                c++;
            }
        }
    }
    return c;
}

Задача:

Напишите программу, которая принимает с клавиатуры число N, создает матрицу размера N на N, заполненную случайными числами, и выводит ее на экран. Затем определите количество четных чисел в этой матрице.

Все просто. Сначала стандартные операции по заполнению массива и выводу его на экран, а весь смысл в этом условии:

if (a[i][j] % 2 == 0 && a[i][j] !=0)
{
   sum++;
}

Если число делится на 2 без остатка и оно не 0, то прибавляем единичку, таким образом полный код будет такой:

#include <iostream>
#include <ctime>

using namespace std;

int main()
{
	srand(time(NULL));
	int n = 0; 
	int sum = 0;
	cin >> n; // Считываем с клавиатуры n
	int **a = new int* [n]; // Создаем массив указателей
	for (int i = 0; i < n; i++)
	{
		a[i] = new int [n]; // Создаем элементы
	}
	// А дальше работа как с обычным массивом. 
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			a[i][j] = rand() % 10;
			cout << a[i][j] << " "; // Вывести элементы на консольку
			if (a[i][j] % 2 == 0 && a[i][j] !=0)
			{
				sum++;
			}

		}
		cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли
	}

	cout << "sum =" << sum << endl;
	// Удаление массива
	for (int i = 0; i < n; i++)
	{
		delete[]a[i]; // Удаляем каждый элемент
	}
	delete [] a; // А потом массив
	return 0;
}

    class Program
    {
        static Random rnd = new Random();
        public static void Main()
        {
            while (true)
            {
                int m, n, min = 46;
                Console.Write("nвведите размер матрицыnчисло строкtm = ");
                m = Int32.Parse(Console.ReadLine());
                Console.Write("число столбцовtn = ");
                n = Int32.Parse(Console.ReadLine());
                int[,] array = new int[m, n];
                for (int i = 0; i < m; i++)
                {
                    for (int j = 0; j < n; j++)
                    {
                        if ((array[i, j] = rnd.Next(-65, 46)) < min && array[i, j] % 2 == 0) min = array[i, j];
                    }
                }
                if (min != 46) 
                    Console.Write("наименьший чётный элемент матрицыt" + min);
                else 
                    Console.Write("Вы "везучий"! В матрице не оказалось ни одного чётного числа!");                
            }            
        }
    }

Добавить комментарий