Как найти нулевое значение в массиве

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <iostream>
 
using namespace std;
 
int main()
{
    int * mas;    // массив
    int mas_size; // размер массива
    int d;        // число d
    int pos;      // позиция в массиве, на которой найден первый нулевой элемент
 
    pos=-1;
 
    setlocale(LC_ALL,"rus");
 
    cout<<"Задача. Пользователь вводит с клавиатуры размер целочисленного массива, затем все элементы массива и число d. Если в массиве найден ближайший (у которого индекс наименьший) нулевой элемет, программа заменяет все элементы массива до ближайшего нулевого на число d. Если в массиве отсутствует нулевой элемент, то программа сообщает пользователю об этомn";
 
    cout<<"Введите размер массива: mas_size = ";
    cin>>mas_size;
    if(mas_size<=0) //проверка на правильность введенного размера массива
    {
        cout<<"неверно задан размер массива";
        return -1;
    }
 
    mas = new int[mas_size]; // выделение памяти под указатель mas размером mas_size
 
    for(int i=0; i<mas_size; i++) // пробегаемся по всем элементам массива
    {
        cout<<"mas["<<i+1<<"]="; // выводим на экран mas и в [] указываем индекс массива (считая с 1)
        cin>>mas[i];             // пользователь с клавиатуры вводин значение элемента массива
    }
 
    for(int i=0; i<mas_size; i++) // пробегаемся счетчиком i по всем элементам массива
    {
        if(mas[i]==0) // если i-ый элемент массива равен нулю
        {
            pos = i; // запоминаем в перевенную pos значение счетчика i и...
            break;   // ...выходим из цикла
        }
    }
 
    if(pos==-1) // если в массиве нету нулевых элементов (12-ая строка программы pos=-1;), значение переменной pos не изменилось
    {
        cout<<"В массиве нету нулевых элементов";
        return 1;
    }
    else // в массиве найден хотя бы один нулевой элемент
    {
        cout<<"Введите число d, на которое надо заменить все элементы, индекс которых меньше первого нулевого элемента: d = ";
        cin>>d; // запоминаем в пернеменную d введенное значение
 
        for(int i=0; i<pos; i++) // пробегаемся счетчиком i от 0 до запомненной позиции pos
        {
            mas[i]=d; // заменяем элементы массива на число d
        }
 
        cout<<"Первый нулевой элемент найден на позиции "<<pos+1<<"n"; // выводим на экран индекс первого нулевого элемента (считая с 1)
 
        for(int i=0; i<mas_size; i++) // пробегаемся счетчиком i по всем элементам массива mas
        {
            cout<<mas[i]<<" "; // выводим на экран элемент массива mas[i]
        }
    }
 
    delete mas; // удаляем выделенную память
 
    return 0;
}

I have the following sample data

var array=[
    {
        "id": null,
        "name": 1251,
        "department": null,
        "DOB":null
    },
    {
        "id": null,
        "name": null,
        "department": 48,
        "DOB":null
    },
    {
        "id": 1421452,
        "name": null,
        "department": 0,
        "DOB":null
    },
    {
        "id": null,
        "name": 1251,
        "department": null,
        "DOB":null
    }
]
    

Requirement is to find first non-null value of each property in the object. For example need to fetch the first non null value of property name in the entire array of objects and it should return 1251 as it is the first non null and not a zero value. In case if all the property values are null like DOB, need to return null.If all values are mix of null and 0 need to return 0
I tried using

var non_null=array.find(el.age=>el.age!=null);

But it throws error

Условие такое: если строки двух массивов совпадают k=1; если нет и в нем есть нулевой элемент k=max; если нет и нет нулевых элементов k=min.Ругается только на строчку else if (b[i]==0)

int k = 0;
int A[]=new int[n];
for(int i=0;i<b.length;i++) {
    int [] second = new int [b[i].length];
    for(int j=0;j<b[i].length;j++)
        second[j]=b[i][j];

    Arrays.sort(second);
    int min = second[0];
    int max = second[second.length-1];

    if((b[i][k]==b[i][k+1])&&(b[i][k+1] == b[i][k+2]))
        Arrays.fill(b[i],0);
    if(Arrays.equals(b[i],second)) {
        A[i]=1;

    }

    else if (b[i] == 0) {
        A[i]=max;
    }
    else 
        A[i]=min;
    System.out.println("A[" + (i+1) + "] = " + A[i]);
}

задан 17 апр 2020 в 11:00

Александр's user avatar

1

Элементами первого уровня массива b являются массивы, а Вы пытаетесь сравнить один из них с нулем.

ответ дан 17 апр 2020 в 11:33

Как найти последний нулевой элемент в массиве?

Доброго времени суток! сижу пытаюсь решить задачку с массивами ( найти сред. ариф-кое всех положительных элементов массива после последнего нулевого массива.)
Возникла проблема с нахождением последнего нулевого элемента в массиве

for (i=30;i!=0;i--)
		{
			if (A[i]==0)
			{
				n1=i;
				n2=i;
				break;
		         }
		}

переменную n2 ввел для проверки, но она всегда равна 30
Подскажите что не так? хотелось бы намеками а не готовым решением.


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

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

  • 3206 просмотров

Надо искать с конца. (После последнего нулевого может вообще не быть элементов.)

for (i=30;i!=0;i--)

Если в массиве 30 элементов, то
for (i = 29; i >= 0; i--)

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

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

Используйте отладчик, если религия не запрещает…

сред. ариф-кое всех положительных элементов массива после последнего нулевого массива

У Вас двумерный массив что ли?

Вам нужно просто среднее арифметическое? Размер массива знаете? Если да – делаете 2 переменных: аккумулятор и счётчик, пробегаете по массиву и все элементы больше нуля добавляете в аккумулятор, а счётчик увеличиваете на 1, потом делите получившееся значение в аккумуляторе на значение в счётчике. Не забудьте про деление на 0.


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

16 мая 2023, в 15:31

500 руб./в час

16 мая 2023, в 15:29

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

16 мая 2023, в 15:07

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

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

За последние 24 часа нас посетили 12873 программиста и 1175 роботов. Сейчас ищут 657 программистов …

  1. Есть массив ответов, в котором индекс число (номер задачи, идут не по порядку, но возрастают), а значение строка (ответ задачи). Массив записывается в базу в виде строки. Задача найти следующий нулевой элемент, чтобы вывести на экран соответствующую задачу. Написал функцию, при проверке выясняется что она находит первый нулевой элемент, а не слудующий после заданного. Получается что во втором foreach $task_id > $id хотя это одно и тоже число. Не пойму где ошибка. Подскажите.

    function test_next($id=0)
    {
    $err = -1;
    $this->sql_query = “select e_result from tbl_test where e_id_user = ‘”.$this->test_user_id().”‘”;
    $this->sql_execute();
    list($temp) = mysql_fetch_row($this->sql_res);

    $arr = unserialize($temp);

    // ищем первый нулевой элемент
    foreach($arr as $task_id => $task_solv)
    {
    if($task_solv == “”)
    {
    $this->out_task_id = $task_id;
    $err = $task_solv;
    break;
    }
    }

    // ищем нулевой элемент после заданного
    foreach($arr as $task_id => $task_solv)
    {
    if($task_id > $id && $task_solv == “”)
    {
    echo $task_id.” e”;
    $this->out_task_id = $task_id;
    $err = $task_id;
    break;
    }
    }

    $this->out_task();

    return($err);
    }


  2. Luge

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск

    интересно, это я один ничего не понял?


  3. Anonymous

  4. Попробую еще раз. 😕
    Есть массив A
    i – целое число (int)
    значение – строка

    Нужно найти нулевой элемент после заданного, если такого нет, то первый нулевый элемент. Идея чтобы показывать значения массива по кругу.
    Пример:
    1)
    A[11] = “”
    A[13] = “as”
    A[14] = “”
    A[15] = “q”

    func(13) должен вернуть 14

    2)
    A[11] = “”
    A[13] = “as”
    A[14] = “d”
    A[15] = “q”

    func(13) должен вернуть 11

    Я начал делать следующим образом. Нахожу первый нулевой элемент. Дальше ищу элемент у которого индекс больше заданного и нулевое значение, если он есть возвращаю его, если нет, то первый найденный. Если пустых нет то -1.
    Так вот функция в первом посте работет не правильно.
    A[11] = “в”
    A[13] = “”
    A[14] = “”
    A[15] = “q”
    func(13) возвращает 13, а надо что бы было 14


  5. lexa

    lexa
    Активный пользователь

    1.     foreach ($arr as $k => $v)
    2.         if (!$v and ($k > $n or $k >= $n))

    Работает?

  6. Спасибо, вечером проверю. Сейчас негде.


  7. redmi

    redmi
    Активный пользователь

    С нами с:
    10 окт 2007
    Сообщения:
    12
    Симпатии:
    0

    1.   foreach ($arr as $k => $v) {


  8. redmi

    redmi
    Активный пользователь

    С нами с:
    10 окт 2007
    Сообщения:
    12
    Симпатии:
    0

    Вроде работает..

    1. function test_next($id=0) {
    2.   //$this->sql_query = “select e_result from tbl_test where e_id_user = ‘”.$this->test_user_id().”‘”;
    3.   //list($temp) = mysql_fetch_row($this->sql_res);
    4.   //$arr = unserialize($temp);  
    5.   // ищем первый нулевой элемент
    6.   foreach($arr as $task_id => $task_solv) {
    7.       //$this->out_task_id = $task_id;
    8.       // Исправлено $task_solv -> $task_id
    9.   // ищем нулевой элемент после заданного
    10.   foreach($arr as $task_id => $task_solv) {
    11.     if($task_id > $id && $task_solv == “”) {
    12.       //$this->out_task_id = $task_id;

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