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

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

Итак формулировка задачи такова «найти все четные элементы массива, вывести на экран, и подсчитать их количество».
Для начала определим, что такое четное число вообще? правильно, четными числами называются числа, которые делятся на 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.

Не могу разобраться, как в консоли вывести элементы массива: все чётные числа от 1 до 20. Помогите, пожалуйста.

public static void main(String[] args) {
    int [] a = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};

    for (int i = 0; i < a.length; i++) {
        a[i] = (i+1)*2;

        System.out.println(Arrays.toString(a));
    }
}

Klym's user avatar

Klym

1,3087 серебряных знаков20 бронзовых знаков

задан 12 ноя 2016 в 19:23

kent's user avatar

1

как в консоли вывести элементы массива: все чётные числа от 1 до 20

Вот так:

public static void main(String[] args) {
    int [] a = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};

    for (int i = 0; i < a.length; i++) {
        System.out.printf( "%dn", a[i] );
    }
}

Или у вас что-то не так либо с задачей, либо с входными данными.

ответ дан 12 ноя 2016 в 19:40

PinkTux's user avatar

PinkTuxPinkTux

9,05613 серебряных знаков26 бронзовых знаков

Отвечаю с планшета по этому за синтаксис не ручаюсь

For(int=0;i<a.length();i++){
   If(a[i]%2==0)
      System.out.println(a[i]);
}

ответ дан 12 ноя 2016 в 20:30

JVic's user avatar

JVicJVic

3,2691 золотой знак15 серебряных знаков35 бронзовых знаков

Если нужно вывести все четные числа массива в котором могут быть нечетные числа, можно использовать данный подход:

 int [] array = {2, 3, 5, 8, 10, 11, 14, 15, 18, 20};

    for(int i=0;i<array.length;i++)
    {
        if(array[i]%2==0)
        {
            System.out.println("Index: "+i+"; Number: "+array[i]);
        }
    }

Если нужно вывести только числа, то и foreach’ем можно обойтись

for (int number : array)
        if (number % 2 == 0)
            System.out.println(number);

Вывод:

Index: 0; Number: 2
Index: 3; Number: 8
Index: 4; Number: 10
Index: 6; Number: 14
Index: 8; Number: 18
Index: 9; Number: 20

ответ дан 29 ноя 2016 в 13:22

Андрей Миронов's user avatar

Shadevskiy

5 / 5 / 11

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

Сообщений: 205

1

Найти четные числа в массиве

31.03.2015, 02:58. Показов 22539. Ответов 4

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


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

Скажите,как сделать так,чтобы после ввода чисел , они входили в массив и можно было бы узнать четные/нечетные.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    setlocale(LC_ALL, "Russian");
 
 
 int *A;
int n,b,v;
cout<<"Ввести кол-во чисел массива : ";
cin>>n;
A = new int [n];
cout<<"Ввести числа массива : "<<endl;
for 
    (int i=0; i<n;i++)
    cin>>b;
 
cout<<"Кол-во нечетных: ";

Если бы тут было бы просто число , то можно было бы сделать так:

C++
1
2
3
int sum = 0 
    (i=2;i<=100;i+=2)
sum++;

Но мне нужно , чтобы он либо во время работы смотрел : делится на 2 – четные , нет – нечетные, либо , чтобы он как-то их закинул в массив , а от туда точно так же делить на 2 и т.д….
Не наю в общем как нуно =(



0



Programming

Эксперт

94731 / 64177 / 26122

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

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

31.03.2015, 02:58

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

В одномерном массиве, элементы которого – целые числа, удалить все четные числа
В одномерном массиве, элементы которого – целые числа, удалить все четные числа
именно удалить а…

В одномерном массиве, элементы которого -целые числа, удалить все четные числа
В одномерном массиве, элементы которого -целые числа, удалить все четные числа.

Подсчитать четные числа в массиве
Помогите составить программы!
1. Заполняет одномерный массив числами от-76 до +58 и подсчитывает…

Определить, упорядочены ли в массиве по возрастанию четные числа
не могу понять в чём проблема и почему не работает
Дана последовательность целых чисел a1, …,…

4

Akrage

5 / 5 / 4

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

Сообщений: 28

31.03.2015, 03:32

2

Лучший ответ Сообщение было отмечено Shadevskiy как решение

Решение

Shadevskiy, надо всего лишь добавить условие в цикл

C++
1
2
3
4
5
6
7
8
int k=0;
for(int i=0;i<n;i++)
{
if(A[i]%2!=0)//Проверка на нечетность
k++;
}
cout<<"Кол-во нечетных: "<<k<<endl;
cout<<"Кол-во четных: "<<n-k;



1



Shadevskiy

5 / 5 / 11

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

Сообщений: 205

31.03.2015, 03:53

 [ТС]

3

Пишет , что все числа нечётные, пытался сам переделать,даже что-то получилось , а потом опять стал писать

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
 int *A;
int n,b,v,g;
cout<<"Ввести кол-во чисел : ";
cin>>n;
A = new int [n];
cout<<"Ввести числа массива : "<<endl;
int *B;
for 
    (int i=0; i<n;i++)
    cin>>b;
 
B = new int [b];
int sumNCh=0;//нечотные
for(int i=0;i<n;i++)
 
if
    (B[i]%2!=0)//Проверка на нечетность
sumNCh++;
 
cout<<"Кол-во нечетных: "<<sumNCh<<endl;
cout<<"Кол-во четных: "<<n-sumNCh;
    
    cout<<endl;
 system ("pause");
    return 0;
}



0



Неэпический

17812 / 10584 / 2043

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

Сообщений: 26,623

Записей в блоге: 1

31.03.2015, 04:01

4

Shadevskiy, выделяйте код тегами:



0



Akrage

5 / 5 / 4

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

Сообщений: 28

31.03.2015, 11:56

5

Shadevskiy, ты объявляешь массив, но не заполняешь его

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

A = new int [n]; cout<<“Ввести числа массива : “<<endl; int *B; for (int i=0; i<n;i++) cin>>b;

Ты в цикле зачем-то считываешь число b, когда нужно считывать A[i];
Потом зачем-то создаешь ещё один массив, но не инициализируешь его. А затем пытаешься сравнивать элементы, которые не задавал

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

B = new int [b]; int sumNCh=0;//нечотные for(int i=0;i<n;i++) if (B[i]%2!=0)//Проверка на нечетность sumNCh++;

Вот как должен выглядеть код по твоей задумке

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
 int *A;
int n,b,v,g;
cout<<"Ввести кол-во чисел : ";
cin>>n;
A = new int [n];
cout<<"Ввести числа массива : "<<endl;
for (int i=0; i<n;i++)
    cin>>A[i];
 
int sumNCh=0;//нечетные
for(int i=0;i<n;i++)
{ 
if (A[i]%2!=0)//Проверка на нечетность
sumNCh++;
}
 
cout<<"Кол-во нечетных: "<<sumNCh<<endl;
cout<<"Кол-во четных: "<<n-sumNCh;
    
 cout<<endl;
delete[] A;//Раз выделил память под массив, следует её и удалить после использования
 system ("pause");
 return 0;
}



0



Как найти все чётные числа в двумерном массиве и сохранить их в файл?

Здравствуйте, мне нужно найти все чётные числа в двумерном массиве и сохранить их в файл.
Написал вот такой код, но он не работает. Подскажите, пожалуйста, в чем дело и как исправить?

static void ex6(int[][] A, int n, int m) throws IOException {
       FileWriter fw = new FileWriter("ParCol.txt");
       int[][] posA = new int[n][m];

       for(int i = 0; i < A.length; i++) {
           for(int j = 0; j < A.length; j++) {
               if(A[i][j] % 2 == 0) {
                    posA[i][j] = A[i][j];
               }
           }
       }

       fw.write(n + " " + m + "n");
       for(int i = 0; i < posA.length; i++) {
           for(int j = 0; j < posA[i].length; j++) {
               fw.write(posA[i][j] + " ");
           }
           fw.write("n");
       }
}


  • Вопрос задан

    более трёх лет назад

  • 782 просмотра

Пригласить эксперта

1. Вложенный цикл у Вас некорректен.
Вместо for(int j=0;j <A.length; j++) нужно прописать for(int j=0 ;j<A[i].length; j++).
A.length для двумерного массива – это количество строк, а A[i].length – количество элементов в каждой i-й строке этого массива. То есть Вы сначала получаете строку в виде массива, потом перебираете каждый элемент полученного массива-строки.
2. Размерность массива A – исходя из п. 1. n = A.length, m = A[0].length. То есть можно так (при условии, что массив не пустой): int[][] posA=new int[A.length][A[0].length], и тогда параметры n и m не нужны.


  • Показать ещё
    Загружается…

23 мая 2023, в 19:34

10000 руб./за проект

23 мая 2023, в 19:03

750 руб./за проект

23 мая 2023, в 18:54

3000 руб./за проект

Минуточку внимания

Если нужно вывести элементы на четных позициях, то достаточно воспользоваться срезом от начала до конца с шагом 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]

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