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
|
|||||
0 |
Kodzaev 3030 / 1916 / 1649 Регистрация: 30.04.2011 Сообщений: 3,060 |
||||
23.04.2013, 14:40 |
3 |
|||
0 |
antonboom bmstu-team 301 / 136 / 91 Регистрация: 10.01.2012 Сообщений: 420 Записей в блоге: 10 |
||||
07.05.2013, 16:05 |
4 |
|||
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);