Как найти число нулевых элементов

nazsal

2 / 2 / 0

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

Сообщений: 60

1

Как найти количество нулевых елементов в массиве?

27.11.2011, 21:40. Показов 6009. Ответов 7

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


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

Помогите пожалуйста. Нужно найти количество нулевых елементов в одмомерном массиве. Вот тот что есть:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
#include<conio.h>
main()
{
clrscr();
int a[5],i,sum,k;
sum=0;i=0;k=0;
while(i<=5)
{printf("Введите елементы массива:");
scanf("%d",&a[i]);
if(a[i]==0) k=k+1;}
printf("Количество нулевых елементов=%d",k);
getch();
}



0



2554 / 1319 / 178

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

Сообщений: 3,086

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

27.11.2011, 21:44

2

Цикл неверен. Во-первых, i не увеличиватся, во-вторых, даже если бы увеличивалась, то выходила бы за пределы массива.



0



go

Эксперт С++

3646 / 1378 / 243

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

Сообщений: 4,526

27.11.2011, 21:47

3

C++
1
2
3
4
int count = 0;
for (i=0; i< size_of_arr; i++)
            if (!arr[i])
              count++;



0



2 / 2 / 0

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

Сообщений: 60

27.11.2011, 21:53

 [ТС]

4

Программа написана на Borland C++ 3.1



0



BumerangSP

4299 / 1421 / 463

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

Сообщений: 2,939

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

27.11.2011, 22:11

5

Самый простой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
 clrscr();
 const int n=10;
 int  m[n],i,j=0;
 randomize();
 for (i=1; i<n; i++)
  {
    m[i]=random(2)-0;
    printf("%d ",m[i]);
  }
 printf("n");
 for (i=1; i<n; i++)
  if (m[i]==0)
   j++;
  printf("n%d",j);
 return 0;
}



0



nazsal

2 / 2 / 0

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

Сообщений: 60

02.12.2011, 16:16

 [ТС]

6

Сам разобрался.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<conio.h>
main()
{
clrscr();
int a[5];
int sum,i,k;
printf("Введите елементы массива:");
i=0,k=0;
while(i<5)
{
scanf("%d",&a[i]);
if (a[i]==0) k=k+1;
i=i+1;
}
printf("Количество нулевых елементов:%d",k);
getch();
}



0



Петррр

6261 / 3562 / 898

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

Сообщений: 5,926

02.12.2011, 17:14

7

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
#include <iterator>
 
int main()
{
    const int n = 15;
    int array[n] = {
        1, 2, 3, 4, 0, 
        1, 2, 3, 4, 0,
        1, 2, 3, 4, 0
    };
    std::copy(array, array + n, 
        std::ostream_iterator<int> (std::cout, " "));
    std::cout << std::endl;
    std::cout << "Count of zero in array: " <<
        std::count(array, array + n, 0) << std::endl;
    system("pause");
    return 0;
}



0



easybudda

Модератор

Эксперт PythonЭксперт JavaЭксперт CЭксперт С++

11757 / 7257 / 1720

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

Сообщений: 13,266

02.12.2011, 17:17

8

C
1
int zero_count(const int * arr, size_t size) { return ( size ) ? ( ! *arr ) + zero_count(arr+1, size-1) : 0; }



1



Формулировка задачи:

Дан одномерный вещественный массив F(16)аписать программу по определению колличества нулевых элементов в массиве!

Код к задаче: «Определить количества нулевых элементов в массиве»

textual

const n=16;
var f:array[1..n] of integer;
    i,k:integer;
 begin
  for i:=1 to n do
   Readln(f[i]);
   for i:=1 to n do
    if f[i]=0 then
     k:=k+1;
  Writeln('Кол-во ',k);
  readln;
 end.

Полезно ли:

15   голосов , оценка 4.200 из 5

Сергей Павлов



Знаток

(482),
на голосовании



10 лет назад

НАЙТИ ЧИСЛО НУЛЕВЫХ ЭЛЕМЕНТОВ МАССИВА Y(N)
Const N = 15
Dim Y(1 To N) As Integer, O As Integer, K As Integer
Private Sub CommandButton1_Click()
Label3.Caption = «»
For i = 1 To N
Y(i) = Rnd * 20 — 10
Label3.Caption = Label3.Caption + «» + Str(Y(i))
Next
End Sub
Private Sub CommandButton2_Click()
Что дальше? помогите, ПОЖАЛУЙСТА! (Microsoft Visual Basic)

Голосование за лучший ответ

Your logic of detecting when there are changes (from 0 to non-0 and from non-0 to 0 elements) is flawed.

You should look at the i and i-1 elements instead. Consider the following:

  • The start index should be when element i-1 is non-zero and element i is 0.
  • The end index should be when element i-1 is 0 and element i is non-0 and a start element was found (start > 0, this is to take into account the fact that the array can start with 0 and there were no start sequence).

The next thing to consider is that there may be multiple cases of 0’s enclosed in non-0’s in the array so each time we encounter an end element, we need to add this to a current count.

Putting this into code:

private static int countZeros(int[] f) {
    int start = 0, end = 0, cnt = 0;
    for (int i = 1; i < f.length; i++) {
        if (f[i-1] != 0 && f[i] == 0) {
            start = i;
        } else if (f[i-1] == 0 && f[i] != 0 && start > 0) {
            end = i;
            cnt += end - start;
        }
    }
    return cnt;
}

Some examples:

System.out.println(countZeros(new int[]{0,0,3,0,0,1})); // prints 2
System.out.println(countZeros(new int[]{3,0,0,1})); // prints 2
System.out.println(countZeros(new int[]{3,0,0,1,0})); // prints 2
System.out.println(countZeros(new int[]{3,0,0,1,0,1})); // prints 3

В этом посте мы рассмотрим, как узнать число элементов в списке Python, удовлетворяющих определенным условиям или критериям.

Если вам просто нужно найти количество конкретных элементов с списке, используйте метод .count()

>>> list_numbers = [1, 2, 2, 5, 5, 7, 4, 2, 1]
>>> print(list_numbers.count(2))
3

Существует несколько способов такого подсчета, и мы изучим каждый из них с помощью примеров. Итак, давайте начнем.

1. Использование цикла for для подсчета в списке Python

В этом фрагменте кода мы используем цикл for для подсчета элементов списка Python, удовлетворяющих условиям или критериям. Мы перебираем каждый элемент списка и проверяем условие, если оно истинно, то мы увеличиваем счетчик на 1. Это простой процесс сопоставления и подсчета для получения интересующего нас количества.

list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20]
count = 0

for item in list_numbers:
    if item%5 == 0:
        count += 1

print("количество элементов списка, удовлетворяющих заданному условию:", count)

количество элементов списка, удовлетворяющих заданному условию: 6

2. Применение len() со списковыми включениями для подсчета в списке Python

В представленном ниже фрагменте кода, мы используем списковые включения (list comprehension), чтобы создать новый список, элементы которого соответствует заданному условию, после чего мы получаем длину собранного списка. Это намного легче понять на примере, поэтому давайте перейдем к нему.

list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20]
element_count = len([item for item in list_numbers if item%5 == 0])


print(
    "количество элементов списка, удовлетворяющих заданному условию:",
    element_count
)

количество элементов списка, удовлетворяющих заданному условию: 6

Подсчет ненулевых элементов

В этом примере мы находим общее количество ненулевых элементов. Чтобы узнать число нулевых членов списка, мы можем просто изменить условие на if item == 0.

list_numbers = [78, 99, 66, 44, 50, 30, 45, 0, 0, 0]
element_count = len([item for item in list_numbers if item != 0])

print(
    "количество элементов списка, удовлетворяющих заданному условию:",
    element_count
)

количество элементов списка, удовлетворяющих заданному условию: 7

3. sum() и выражение-генератор для подсчета в списке Python

В этом примере кода мы используем sum() с генераторным выражением. Каждый элемент списка проходит проверку условием и для тех элементов, которые ему удовлетворяют, возвращается значение True. Метод sum() в свою очередь подсчитывает общее число истинных значений.

list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20]
count = 0
count = sum(True for i in list_numbers if i % 5 == 0)

print(
    "количество элементов списка, удовлетворяющих заданному условию:",
    count
)

количество элементов списка, удовлетворяющих заданному условию: 6

4. sum() и map() для подсчета элементов списка Python с условиями или критериями

Функция map(fun, iterable) принимает два аргумента: итерируемый объект (это может быть строка, кортеж, список или словарь) и функцию, которая применяется к каждому его элементу, — и возвращает map-объект (итератор). Для применения одной функции внутри другой идеально подходит лямбда-функция. Таким образом, map() примет первый аргумент в виде лямбда-функции.

Здесь sum() используется с функцией map(), чтобы получить количество всех элементов списка, которые делятся на 5.

Давайте разберемся на примере, в котором переданная лямбда-функция предназначена для фильтрации членов списка, не кратных 5.

list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20]
count = 0
count = sum(map(lambda item: item % 5 == 0, list_numbers))

print(
    "количество элементов списка, удовлетворяющих заданному условию:",
    count
)

количество элементов списка, удовлетворяющих заданному условию: 6

5. reduce() с лямбда-функцией для подсчета элементов списка Python с условием или критериями

Lambda — это анонимная (без имени) функция, которая может принимать много параметров, но тело функции должно содержать только одно выражение. Лямбда-функции чаще всего применяют для передачи в качестве аргументов в другие функции или для написания более лаконичного кода. В этом примере мы собираемся использовать функции sum(), map() и reduce() для подсчета элементов в списке, которые делятся на 5.

Приведенный ниже код наглядно демонстрирует это.

from functools import reduce


list_numbers = [78, 99, 66, 44, 50, 30, 45, 15, 25, 20]
result_count = reduce(
    lambda count, item: count + (item % 5 == 0),
    list_numbers,
    0
)

print(
    "количество элементов списка, удовлетворяющих заданному условию:",
    result_count
)

количество элементов списка, удовлетворяющих заданному условию: 6

Надеюсь, что вы узнали о различных подходах к подсчету элементов в списке Python с помощью условия или критериев для фильтрации данных.

Удачного обучения!

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