Другие языки программирования и технологии

Плиз помогите

Выяснить, какое число в массиве встретится ранее – положительное или отрицательное (нули не рассматривать). Если положительное – найти в массиве максимальный элемент и его местоположение, если отрицательное – минимальный элемент и его расположение. Результат отпечатать.
flag = 0;
for (i=0; i < n; i++)
if (arr[ i ] != 0)
if (arr [ i ] > 0) {flag = 1; break;} else {flag = -1; break;}

if (flag != 0)
{
minmax=arr[ 0 ];
iminmax=0;
for (i=1; i < n; i++)
{
if ((flag == 1) && (arr[ i ] > minmax)) {minmax=arr[ i ]; iminmax=i;}
if ((flag == -1) && (arr[ i ] < minmax)) {minmax=arr[ i ]; iminmax=i;}
}
Print(iminmax, ' ', minmax);
}
АД
Андрей Диянов
1 741
Лучший ответ
стучи в агент
Принцип прост: сначала задаешь переменную Test=0, затем начинаешь цикл, скажем, по k=1,...kMax, и в цикле читаешь элемент массива A[k]. след. операция в цикле -- определение знака A[k], если 0 => переходишь к следующему k,
если не 0 => определяешь знак и в соответствии с заданием начинаешь искать либо максимум, либо минимум.
Допустим максимум: тогда сравниваешь A[k] с Test =>
если A[k] больше, то присваиваешь это значение Test:=A[k],
если меньше или равно => переходишь к след. значению k в цикле.
В конце цикла в переменной Test у тебя требуемое значение максимума.
Если нужно знать номер элемента с максим. значением, тогда надо еще запоминать соотв. номер k в момент присваивания Test:=A[k], т. е. нужна еще одна переменная,
ITest:=k.
Тогда в конце цикла в переменной Test у тебя требуемое значение максимума, а в переменной iTest -- порядковый номер максим. элемента массива.