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

У меня есть двумерный массив. Мне нужно подсчитать количество чётных его элементов и вывести это количество на экран. Как это сделать?

import random
random.seed()
m = input('Количество столбцов > ') # количество столбцов
n = input('Количество строк > ') # количество рядов
M = [[random.randint(-100, 100) for _ in range(eval(m))] for _ in range(eval(n))]
for V in M:
  for e in V:
    print(e, end=', ')
  print()

задан 12 дек 2019 в 20:55

Raisa Tinina's user avatar

1

import random
random.seed()
m = input('Количество столбцов > ') # количество столбцов
n = input('Количество строк > ') # количество рядов
M = [[random.randint(-100, 100) for _ in range(eval(m))] for _ in range(eval(n))]
for V in M:
    for e in V:
        print(e, end=', ')
    print()

even = 0
for V in M:
    for e in V:
        if e % 2 == 0:
            even += 1
print(even)

P.s. в этом сообществе принято излагать свой вариант решения, каким бы он ни был, чтобы его можно было подправить, а не просить решать задачу за вас

ответ дан 12 дек 2019 в 21:05

Евгений's user avatar

ЕвгенийЕвгений

4,4872 золотых знака8 серебряных знаков28 бронзовых знаков

import random
random.seed()
m = input('Количество столбцов > ') # количество столбцов
n = input('Количество строк > ') # количество рядов
M = [[random.randint(-100, 100) for _ in range(int(m))] for _ in range(int(n))]

count = 0

for V in M:
  for e in V:
    if not e & 1:
        count += 1
print(count)

ответ дан 12 дек 2019 в 21:06

asd's user avatar

asdasd

1,8053 золотых знака13 серебряных знаков27 бронзовых знаков

Ну на коленке как-то так:

import random


def even_values(mtx: list) -> list:
    new = []
    for row in range(mtx.__len__()):
        for col in range(mtx[row].__len__()):
            if mtx[row][col] % 2 == 0:
                new.append(mtx[row][col])
    return new


if __name__ == '__main__':
    random.seed()
    m = int(input('Количество столбцов > '))  # количество столбцов
    n = int(input('Количество строк > '))  # количество рядов
    print(even_values([[random.randint(-100, 100) for _ in range(m)] for _ in range(n)]).__len__())  

Или без создания самой матрицы:

random.seed()
m = int(input('Количество столбцов > '))  # количество столбцов
n = int(input('Количество строк > '))  # количество рядов
print(sum(1 if random.randint(-100, 100) % 2 == 0 else 0 for _ in range(m * n))) 

ответ дан 12 дек 2019 в 21:28

Ole Lukøje's user avatar

Ole LukøjeOle Lukøje

3,8951 золотой знак9 серебряных знаков33 бронзовых знака

Fnatick

0 / 0 / 1

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

Сообщений: 25

1

Поиск чётных элементов массива и их вывод

08.01.2014, 15:16. Показов 5640. Ответов 3

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


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

Дан целочисленный массив размера N. Вывести все содержащиеся в
данном массиве четные числа в порядке убывания их индексов, а также
их количество K.
Сделал всё кроме вывода в порядке убывания может кто поможет

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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(){
    int s=0;
    int n;
    int i;
    int m[100];
    int ipos;
     
 
    printf("razmer massiva ="); scanf("%i",&n);
    for (i=0; i<n; i++){
        m[i]=rand()%10-5;
        printf("%4i", m[i]);
    }
    
    printf("nsort array =n"); 
 
    for (i=0; i<n; i++){
        if (m[i]%2==0){
            printf(" %d " , m[i]);
            
            
        s++;
        }
        
     }
    printf("nkol-vo 4eTHbIx = %dn",s);    
     for (i=0; i>=0; i--){
         if (m[i]%2==0) 
            printf(" %d ", m[i]);
     }
    return 0;
          
 
}



0



RHB

33 / 33 / 17

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

Сообщений: 200

08.01.2014, 16:49

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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(){
    int s=0;
    int n;
    int i;
     
 
    printf("razmer massiva ="); 
    scanf("%i",&n);
    int m[n];
    for (i=0; i<n; i++){
        m[i]=rand()%10-5;
        printf("%4i", m[i]);
    }
    
    printf("nsort array =n"); 
 
    for (i=n-1; i>=0; --i){
        if (m[i]%2==0){
            printf("%4i " , m[i]);
            s++;
        }
     }
    printf("nkol-vo 4eTHbIx = %dn",s);    
    system("PAUSE");
    return 0;
}



1



Fnatick

0 / 0 / 1

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

Сообщений: 25

09.01.2014, 09:19

 [ТС]

3

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

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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(){
    int s=0;
    int n;
    int i;
     
 
    printf("razmer massiva ="); 
    scanf("%i",&n);
    int m[n];
    for (i=0; i<n; i++){
        m[i]=rand()%10-5;
        printf("%4i", m[i]);
    }
    
    printf("nsort array =n"); 
 
    for (i=n-1; i>=0; --i){
        if (m[i]%2==0){
            printf("%4i " , m[i]);
            s++;
        }
     }
    printf("nkol-vo 4eTHbIx = %dn",s);    
    system("PAUSE");
    return 0;
}

Спасибо не мог разобраться с обратным циклом



0



33 / 33 / 17

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

Сообщений: 200

09.01.2014, 09:50

4

Fnatick, а чего там разбираться то?
Вы обычно массив обходите из начала(с нуля) в конец (до N-1 включительно). Сейчас же просто из конца(N-1) в начало (в ноль). Индексы, соответственно принимают значения
N-1
N-2
N-3

2
1
0



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

09.01.2014, 09:50

4

>>> a = [1, 2, 3, 4, 5, 6, 7, 8]
>>> b = [x for x in a if not x%2]#четные значения из массива
>>> b
[2, 4, 6, 8]
>>> b = [v for k,v in enumerate(a) if not k%2]#четные значения ключей из массива
>>> b
[1, 3, 5, 7]
>>> 
>>> list(enumerate(a)) #чтобы понимать как это работает
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8)]
>>>

Мне кажется решать задачки нужно самому. Но вы почитайте про генераторы массивов.

В обоих случаях использован условный генератор — добавляет элемент если соблюдается условие. Условие это остаток от деления на 2 — если равен нулю то число четное. Инверсия чтобы четные результаты давали True(1) вместо False(0).
Функция enumerate() — очень полезная когда надо получить и элемент массива и его порядковый номер в массиве(ключ).
P.S. Кстати 0 это четный индекс по вашему или нет?

Нахождение четных элементов массива

Итак формулировка задачи такова «найти все четные элементы массива, вывести на экран, и подсчитать их количество».
Для начала определим, что такое четное число вообще? правильно, четными числами называются числа, которые делятся на 2 без остатка (иногда еще говорят кратны 2).

Теперь определимся как это реализовать. В паскале есть такой замечательный оператор mod, который нам как раз и необходим. Сей оператор отвечает за деление с остатком, а если быть точнее, применив данный оператор, вы получаете остаток от деления. Например 11 разделить на 2. Использовав mod мы получим в ответе число 1.

11/2 = 5 (остаток 1)

Теперь как это все записать в паскале. Пусть переменная х — это остаток

x := 11 mod 5

Вернемся к нашей задаче, где нас интересует нахождение четных элементов массива. Для ее решения нужно подойти к составлению кода логически .
Каков остаток при делении четного числа на 2? Верно, остаток всегда равен нулю. (Подробнее о четности вы можете прочесть в статье оператор div и оператор mod) То есть нам просто нужно использовать цикл с условием вида

if s[i] mod 2 = 0 then

Ну а теперь код всей задачи (как в помните нам еще было необходимо подсчитать количество четных чисел и вывести их всех на экран)

var i,x,y:integer;s:array [1..10] of integer;
begin
for i:=1 to 10 do
read(s[i]);
for i:=1 to 10 do
if s[i] mod 2=0 then begin
writeln (s[i]);
y:=y+1;
end;
writeln;
writeln(‘количество четных чисел = ‘,y)
end.

Если нужно вывести элементы на четных позициях, то достаточно воспользоваться срезом от начала до конца с шагом 2

l = [0, 1, 2, 3, 4, 5, 6]
l[::2]  # [0, 2, 4, 6]

А если нужно вывести элементы четные по значению, то можно собрать новый массив, отфильтровав исходный

l = [3, 2, 5, 7, 1, 8, 0, 11]
[x for x in l if x % 2 == 0]  # [2, 8, 0]

Понравилась статья? Поделить с друзьями:
  • Звук записался на один канал как исправить
  • Как составить генеалогическое дерево князей
  • Как найти последний документ который печатала
  • Как найти тангенс угла bac в треугольнике
  • Как найти калькулятор на компьютер для