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

i have a bunch of questions and answers, the un answered questiones must be thrown at the top with error message, the answers are in array and if un answered the array stores the value as undefined array element.

I tried to retrieve the position of the element by converting it to list, but while looping the list is missing out the empty element. when I loop it with simple loop:

  <cfloop from ="1" to="#arraylen(currentinfo.answers)#" index="ele">
  <cfset i = i+1>
   <cfif not listlen(currentinfo.answers[ele],'-')><cfset j=#i#>#j#</cfif>
  </cfloop>

I’m getting error below:

Element 5 is undefined in a Java object of type class coldfusion.runtime.Array.  

The error occurred in D:sitesaskseatonsectionsPSSurveyClientstagssurveydisplay.cfm: line 194

192 : <cfloop from ="1" to="#arraylen(currentinfo.answers)#" index="ele">
193 : <cfset i = i+1>
194 :   <cfif not listlen(currentinfo.answers[ele],'-')><cfset j=#i#>#j#</cfif>
195 : </cfloop>
196 : <div>Question(s)#j# must be answered to proceed further.</div>

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;
}

Условие такое: если строки двух массивов совпадают 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
Подскажите что не так? хотелось бы намеками а не готовым решением.


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

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

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

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

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

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

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

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

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

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

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

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


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

24 мая 2023, в 20:43

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

24 мая 2023, в 20:33

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

24 мая 2023, в 20:25

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

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

Program pos;
var a : array [1..100] of integer;
i, n, k, l : integer;
begin
write('Введите размер массива : ');
readln(n);
 
writeln('Введите элементы массива (через пробел) : ');
for i:=1 to n do begin
read(a[i]);
end;
 
writeln;
 
for i:=1 to n do
if a[i] = 0 then begin k:=i; {первый}
break;
end;
 
for i:=1 to n do begin
if a[i] = 0 then l:=i {Последний}
end;
 
if (k and l)>0 then begin 
writeln('Первая позиция нулевого элемента = ',k);
writeln('Последняя позиция нулевого элемента = ',l) end
else writeln('Не найдено нулевых элементов в данном массиве!');
 
end.

Понравилась статья? Поделить с друзьями:
  • Как найти корень какой то степени
  • Как найти ранг матрицы в матлабе
  • Как найти в экселе вывести
  • Препараты как найти в иркутске
  • Как найти знахарку в кировской области