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

Помогите составить задачу в Delphi

Сама задача. Найти сумму номеров отрицательных элементов массива H(8).
Adil Daniylov
Adil Daniylov
699
Доброго времени суток.

С разрешения syan чуток подправлю его текст.

function SumNum(H: Array of Integer): Integer; //передаем в функцию массив в виде параметра
var count: Integer; //управляющая переменная цикла
begin
Result:= 0; //обнуляем результат
for count:= Low(H) to High(H) do //запускаем цикл по элементам открытого массива
if H[count] < 0 then Result:= Result + count; //суммируем номера отрицательных элементов
end;

Использование Low(H) и High(H) в качестве границ цикла позволит применять эту функцию не только для массивов с размерностью 8.

Удачи!
Андрей Самохвалов
Андрей Самохвалов
59 613
Лучший ответ
Артём Метлинский Немного критики в адрес Вашего ответа: Во-первых, Ваш код повторяет мой... Единственное в чём отличия - добавлены комментарии и использовано другое имя переменной цикла. Во-вторых... Вы смотрели что делает компилятор в случае Вашего кода? Конечно во время гигабайт оперативной памяти это не существенно, но не надо забывать о том, что созданную программу могут запускать и на слабеньком компьютере, где эта погрешность будет заметна... Думаю взглянув на мой и Ваш код Вы найдёте о чём я говорю...
Если под номером отрицательного элемента Вы имеете ввиду его индекс в массиве, то функция будет следующей:

function NegativeSumNo(const Values: array of Integer): Integer;
var
Index: Integer;
begin
Result := 0;
for Index := Low(Values) to High(Values) do
if Values[Index] < 0 then
Result := Result + Index;
end;

А вот так эту функцию можно вызвать:

Caption := IntToStr(NegativeSumNo([1, 2, 3, 4, -5, -6, 7]));
Ivan Polshkov
Ivan Polshkov
8 280
Андрей Самохвалов Опередили, пока сам отвечал... :-) +5
Это ты имел в виду?

function SumNum(H: Array of Integer): Integer; //передаем в функцию массив в виде параметра
var count: Integer; //счетчик массива разм. 8
begin
Result:= 0; //обнуляем результат
for count:= 0 to 7 do //запускаем цикл на 8
if H[count] <> 0 then Result:= Result + i; //суммируем
end;
//Функция возвращает сумму номеров отрицательных элементов (т. е. count)
Вадим Гельмер
Вадим Гельмер
1 930
Ivan Polshkov Ну во первых, Вы получаете на входе в функцию динамический массив и не учитываете, что может передаться менее 8 элементов массива... Во вторых, в Вашей функции неправильное условие, соответственно и результат неверен.