Как найти наименьшее положительное число в массиве

So … I have : int array[] = {-8,2,0,5,-3,6,0,9};

I want to find the smallest positive number ( which in the list above is 2 )

This is what i am doing :


int array[] = {-8,2,0,5,-3,6,0,9};

int smallest=0;


        for(int i=0;i<array.length;i++) // Find the first number in array>0 (as initial           
                                         // value for int smallest)
        {
            if(array[i]>0)
            {
                smallest=array[i]; 
                break;// Break out of loop, when you find the first number >0
            }   
        }


        for(int i=0;i<array.length;i++) // Loop to find the smallest number in array[]
        {

            if(smallest>array[i]&&array[i]>0)
            {
                smallest=array[i];

            }

        }

        System.out.println(smallest);

        }

My question is :

Can we reduce the number of steps ?
Is there any smarter/shorter way of doing it, with no other data structure.

Thanks.

ошибка у тебя в этих строках

if(j < 0) {
    j *= (-1);

никогда j не станет меньше 0, поэтому каждая итерация ничего не делала, и ты получал всегда первый элемент массива

в твоем случае код должен выглядеть так

int main() {
    int arr[2][3] = {{74,4,-1}, {1,-6,9}};
    int min = arr[0][0];
    
    for (int i = 0; i < 2; i++) {
        for (int j = 0; j < 3; j++) {
            if (arr[i][j] >= 0 && arr[i][j] < min)
                min = arr[i][j];
        }
        
    }

    
    cout << min << endl;
    return 0;
}

вот результат работы

0 / 0 / 0

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

Сообщений: 3

1

Найти наименьшее положительное число в массиве

23.04.2013, 11:15. Показов 6014. Ответов 3


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

Дан массив действительных чисел а1,…, а16. Найти наименьшее положительное число.
Помогите пожалуйста))



0



Puporev

23.04.2013, 11:31

 Комментарий модератора 

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

)

Название темы конечно крутое, еще такое увижу, схлопочете.



0



Kodzaev

3030 / 1916 / 1649

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

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

23.04.2013, 14:40

3

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Var
  a: Array [1..16] of Real;
  i: Byte;
  max: Real;
BEGIN
max:=Maxint;
Writeln('Введите массив: ');
For i:=1 to 16 do
begin
  Readln(a[i]);
  If (a[i]>0) and (a[i]<max) Then
  max:=a[i];
end;
Writeln('ОТВЕТ: ',max:2:2);
END.



0



antonboom

bmstu-team

301 / 136 / 91

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

Сообщений: 420

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

07.05.2013, 16:05

4

Pascal
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
uses crt;
function mass(n:integer;var min1:integer): integer;
var i:byte;
    a:array[1..254] of integer;
    f:integer;
begin
for i:=1 to N do begin
a[i]:=random(201)-100;
write(a[i],' ');
end;
 
f:=0;
  for i:=1 to N do begin
  if (a[i]>0) and (f=0) then begin min1:=a[i];
  inc(f);
  end;end;
 
        for i:=1 to N do begin
        if (a[i]>0) and (a[i]<min1)then begin min1:=a[i];
        end; end;
        writeln;
end;
 
var n,k,min:integer;
    i:byte;
begin
write('Ñêîëüêî ìàññèâîâ? ');readln(k);
for i:=1 to k do begin
write('Ââåäèòå ðàçìåðíîñòü ',i,' ìàññèâà ');readln(n);
mass(n,min);
writeln('Íàèìåíüøèé ïîëîæèòåëüíûé â ',i,' ìàññèâå: ',min);
writeln;
end;
end.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

07.05.2013, 16:05

Помогаю со студенческими работами здесь

Опишите алгоритм, позволяющий найти и вывести наименьшее положительное нечетное число, содержащееся в файле
задание:Опишите алгоритм, позволяющий найти и вывести наименьшее положительное нечетное число,…

Выяснить, какое число в массиве встретиться ранее — положительное или отрицательное
Здравствуйте, помогите пожалуйста с решение этой задачи, а то дела с массивами обстоят плохо….

Выяснить, какое число в массиве встретится ранее — положительное или отрицательное
Дан массив А вещественных чисел. Выяснить, какое число в массиве встретится ранее — положительное…

Выяснить, какое число в массиве встретится ранее – положительное или отрицательное
Добрый вечер. Помогите с задачкой пожалуйста,заранее благодарен

Ввести одномерный массив A,…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

4

uses crt;
function mass(n:integer;var min1:integer): integer;
var i:byte;
    a:array[1..254] of integer;
    f:integer;
begin
for i:=1 to N do begin
a[i]:=random(201)-100;
write(a[i],' ');
end;
 
f:=0;
  for i:=1 to N do begin
  if (a[i]>0) and (f=0) then begin min1:=a[i];
  inc(f);
  end;end;
 
        for i:=1 to N do begin
        if (a[i]>0) and (a[i]<min1)then begin min1:=a[i];
        end; end;
        writeln;
end;
 
var n,k,min:integer;
    i:byte;
begin
write('Ñêîëüêî Г¬Г*ññèâîâ? ');readln(k);
for i:=1 to k do begin
write('Ââåäèòå Г°Г*çìåðГ*îñòü ',i,' Г¬Г*Г±Г±ГЁГўГ* ');readln(n);
mass(n,min);
writeln('ГЌГ*èìåГ*ГјГёГЁГ© ïîëîæèòåëüГ*ûé Гў ',i,' Г¬Г*Г±Г±ГЁГўГҐ: ',min);
writeln;
end;
end.

Есть массив, из него я должен получить минимальное ПОЛОЖИТЕЛЬНОЕ число (т.е 18). Сделал таким методом, но ведь еще как-нибудь можно отбросить отрицательные значения? А если бы у меня в массиве было 100+ значений, это каждое вручную пришлось бы убирать… Пытался задавать условия, циклами баловался, без толку. Использовал delete, но там на месте удаленного элемента, появляются значения undefined, соответственно, при выводе минимального числа выдает NaN.

var array = [23, -54, 32, 88, 18, -10, -25, -50];
array.splice(1,1);
array.splice(4,3);
var minValue = Math.min.apply(null,array);
alert(minValue);

Понравилась статья? Поделить с друзьями:
  • Как найду номер телефона теле2
  • Как найти наибольшее значение функции sin
  • Как найти минус мультиметром в машине
  • Как найти в предложении вспомогательный глагол
  • Как найти вестибулярный аппарат