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

I was searching for solution to find negative numbers in array and i came up with something like this code from searching.

public static void main(String args[]){
    int arrayNumbers[] = { 3, 4, 7, -3, -2};
    for (int i = 0; i <= arrayNumbers.length; i++){
        int negativeCount = 0;
        if (arrayNumbers[i] >= 0){
                negativeCount++;
    }
    System.out.println(negativeCount);
    }
}

I was wondering is there an easier or shorter way to find the negative number in an array vs the code above?

Bohemian's user avatar

Bohemian

408k90 gold badges570 silver badges715 bronze badges

asked Oct 1, 2012 at 13:18

PHZE OXIDE's user avatar

10

A java 7 string-based one-liner that counts the minus signs:

System.out.println(Arrays.toString(array).replaceAll("[^-]+", "").length());

A Java 8 stream-based way:

System.out.println(Arrays.stream(array).filter(i -> i < 0).count());

Regarding your code, there are a few things wrong with it:

  • Since you don’t care about the index of an element, use the foreach syntax instead
  • Declare the scope of your count variable outside the loop, otherwise
    • it keeps getting set to zero every iteration, and
    • you couldn’t use it even if it did contain the correct count because it would be out of scope (which would be only inside the loop) where you need to return it (after the loop)
  • Use the correct test number < 0 (your code >= 0 counts non negative numbers)

Try this:

public static void main(String args[]) {
    int[] array = { 3, 4, 7, -3, -2};
    int negativeCount = 0;
    for (int number : array) {
        if (number < 0) {
            negativeCount++;
        }
    }
    System.out.println(negativeCount);
}

answered Oct 1, 2012 at 13:24

Bohemian's user avatar

BohemianBohemian

408k90 gold badges570 silver badges715 bronze badges

0

A few issues with the code:

  • the terminating condition in the for will produce an out of bounds exception (arrays use zero-based index)
  • the scope of negativeCount is within the for only
  • the negative check is incorrect

A slightly shorter version would use the extended for:

int negativeCount = 0;
for (int i: arrayNumbers)
{
    if (i < 0) negativeCount++;
}

For a shorter version (but arguably less readable) eliminate the for‘s {}:

int negativeCount = 0;
for (int i: arrayNumbers) if (i < 0) negativeCount++;

answered Oct 1, 2012 at 13:21

hmjd's user avatar

hmjdhmjd

120k19 gold badges206 silver badges249 bronze badges

2

Your negativeCount should be declared outside your loop.. Also, you can move your System.out.println(negativeCount) outside your loop, as it will print for every iteration..

And you can use enhanced-for loop

public static void main(String args[]){
    int arrayNumbers[] = { 3, 4, 7, -3, -2};

    int negativeCount = 0;
    for (int num: arrayNumbers) {
        if (num < 0){
                negativeCount++;
        }

    }
    System.out.println(negativeCount);
}

answered Oct 1, 2012 at 13:22

Rohit Jain's user avatar

Rohit JainRohit Jain

208k45 gold badges406 silver badges523 bronze badges

3

A bit shorter with the foreach syntax:

 int negativeCount = 0;
 for(int i : arrayNumbers)
 {
      if(i < 0)negativeCount++;
 }

answered Oct 1, 2012 at 13:23

josefx's user avatar

josefxjosefx

15.5k6 gold badges38 silver badges63 bronze badges

2

0 / 0 / 0

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

Сообщений: 42

1

Поиск отрицательных чисел в массиве

20.01.2016, 18:18. Показов 16274. Ответов 1


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

помогите пожалуйста, нужно из массива A[10] вывести на экран все отрицательные числа
если есть возможность, попробовать объяснить программу



0



GbaLog-

Любитель чаепитий

3737 / 1796 / 563

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

Сообщений: 6,012

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

20.01.2016, 18:31

2

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

Решение

kroekt94,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
using namespace std;
 
int main() {
    // создаём массив и инициализируем его 10 значениями
    int a[10] = { 1,23,4,5,-1321,2,-123,-35,-2,0 };
    // запускаем цикл, который пройдёт по всему массиву
    for( int i = 0; i < 10; i++ )
        if( a[i] < 0 ) cout << a[i]; // если значение найдено, то выводим его
    cin.get(); // для того, чтобы консоль не закрылась сразу(ожидание ввода)
    return 0;
}



1



Максимальный отрицательный элемент массива

Просмотров 7.4к. Обновлено 15 октября 2021

В массиве найти максимальный отрицательный элемент. Вывести на экран его значение и позицию в массиве.

Задача поиска максимального отрицательного элемента массива не такая простая, как может показаться на первый взгляд.

Введем переменную (условно назовем ее A) для хранения индекса максимального отрицательного элемента и присвоим ей значение, выходящее за пределы возможных индексов. Например, если индексация элементов начинается с нуля, то данной переменной можно присвоить значение -1 (можно присвоить 0, если индексация начинается с 1). Если в массиве вообще не будет найдено отрицательных элементов, то ее такое значение будет «сигнализировать» об этом.

Перебираем массив в цикле. Если очередной элемент меньше нуля и значение переменной A равно -1, то значит, это первый встретившийся отрицательный элемент. Запоминаем его индекс в переменной A. Если же очередной элемент отрицательный, но A уже не содержит -1, то сравниваем значение текущего элемента с тем, которое содержится по индексу, хранимому в A. Если текущий элемент больше, то записываем его индекс в A.

После завершения цикла проверяем, не равно ли значение A -1. Если не равно, то выводим индекс максимального отрицательного элемента массива и его значение.

Pascal

максимальное отрицательное число паскаль


const N = 15;
var
arr: array[1..N] of integer;
i: byte;
index: byte;
begin
randomize;
for i:=1 to N do begin
arr[i] := random(100) - 50;
write(arr[i],' ');
end;
writeln;

index := 0;
for i:=1 to N do begin
if (arr[i] < 0) and (index = 0) then
index := i
else
if (arr[i] < 0) and (arr[i] > arr[index]) then
index := i;
end;
if index <> 0 then
writeln(index,': ',arr[index]);
end.



-36 0 -35 -15 2 -43 -18 -4 -6 -24 -30 -28 47 18 41
8: -4

Язык Си


#include < stdio.h>
#define N 15

main() {
int arr[N],index, i;
srand(time(NULL));
for (i=0; i< N; i++) {
arr[i] = rand() % 100 - 50;
printf("%d ", arr[i]);
}
printf("n");

index = -1;
for (i=0; i< N; i++) {
if (arr[i] < 0 && index == -1)
index = i;
else
if (arr[i] < 0 && arr[i] > arr[index])
index = i;
}
printf("%d-й = %dn",index+1,arr[index]);
}



33 -21 24 -36 42 -11 -6 42 32 36 -1 43 -8 24 40
11-й = -1

Python

максимальное отрицательное число python (питон)


from random import random
N = 15
arr = []
for i in range(N):
arr.append(int(random() * 100) - 50)
print(arr)

i = 0
index = -1
while i < N:
if arr[i] < 0 and index == -1:
index = i
elif arr[i] < 0 and arr[i] > arr[index]:
index = i
i += 1

print(index+1,':', arr[index])



[-30, 42, -5, 31, -37, 25, -50, -44, 17, -34, -33, -21, 48, 45, 15]
3 : -5

КуМир


алг чет_нечет
нач
цел N = 15
целтаб arr[1:N]
цел i, index

нц для i от 1 до N
arr[i] := irnd(100) - 50
вывод arr[i], " "
кц
вывод нс

index := 0
нц для i от 1 до N
если arr[i] < 0 и index = 0 то
index := i
иначе
если arr[i] < 0 и arr[i] > arr[index] то
index := i
все
все
кц
вывод index, ": ", arr[index], нс
кон



19 32 36 -15 -22 3 48 -42 3 -2 -6 -48 33 27 6
10: -2

Basic-256


N = 15
dim arr(N)
for i=0 to N-1
arr[i] = int(rand() * 100) - 50
print arr[i] + " ";
next i
print

index = -1
for i=0 to N-1
if arr[i] < 0 then
if index = -1 then
index = i
else
if arr[i] > arr[index] then
index = i
endif
endif
endif
next i

print index+1;
print ": ";
print arr[index]



17 31 -21 24 -8 29 7 42 13 -15 -30 30 33 32 -7
15: -7

Проверка отрицательности элемента вынесена в отдельную ветку if. Иначе возникает ошибка, когда первый элемент неотрицательный, т.к. в Basic-256 при логическом операторе and происходит проверка второго условия даже если первое ложное. И получается, что переменная index отрицательна, что вызывает ошибку выхода за границы массива.

Напишем программу, которая определяет наличие в массиве отрицательных чисел.

 Определение наличия в массиве отрицательных чисел.


program massiv8;
uses crt;
const N=10;
type x=array [1..N] of integer;
var a:x;
i:integer;
k:integer;
begin
clrscr;
randomize;
for i:=1 to N do
begin
a[i]:= -100+random (201);
write (A[i]:5)
end;
writeln;
k:=0;
for i:=1 to N do
if a[i] <0 then="" li="">
inc (k);
if k>0 then
begin
writeln ('В массиве есть отрицательные элементы');
writeln ('Количество отрицательных элементов = ',k:5);
end
else
writeln ('В массиве нет отрицательных элементов');
readln
end.


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

Строка №13-№14 генерируем случайные числа и выводи их на экран.

В строке №17 присваиваем «K» первоначальное значение равное 0.

В строке №19 записываем условие: если значение элемента массива (т.е. если сгенерированное число) меньше 0, тогда увеличиваем переменную «K» на единицу (строка №20).

В строке №21 записываем условие: если K>0 (т.е. если количество отрицательных чисел больше 0), тогда выводим на экран 2 сообщения (строка №23 и №24). В обратном случае (строка №26), выводим другое сообщение (строка №27).

nakhozhdenie otricateljnihkh ehlementov massiva

nakhozhdenie otricateljnihkh ehlementov massiva.


Предыдущая статья : Подсчет количества четных элементов в массиве.

Оглавление : Уроки Паскаль. Массивы.

Следующая статья : Нахождение номера отрицательного элемента в массиве.


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