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

Delphi. Сумма индексов положительных (х>0) элементов. +10 даю

помогите такое написать...
Доброго времени суток.

Массив какой, одномерный, двухмерный? Корректно заданный вопрос, это три четверти вероятности получения правильного ответа.

S := 0;
for j:=1 to N do
if A[j] > 0 then S := S + j;

Всего-то и делов. Для двухмерного добавится еще один цикл, а сумма будет считаться так

if A[j,k] > 0 then S := S + j + k;

Удачи!
ОЕ
Олег Енин
59 612
Лучший ответ
Роман Бондаренко благодарю, но хотелось бы немного подробней...я пока с делфи на Вы...
массив одномерный, что выносить из таблицы компонентов и т.д...заранее несказанно благодарен
Олег Енин Memo1.Lines.Add(tmpS); {вывод массива для контроля}
Memo1.Lines.Add('');

S := 0;
for j:=1 to N do
if A[j] > 0 then S := S + j;

Memo1.Lines.Add('Сумма индексов положительных элементов - '+ IntToStr(S));

end;

end.

Не хочет влазить в один коммент. Как видно из текста модуля на форме два компонента. TMemo и TButton.
уже давно было и не правда.. .
Задаешь массив там проверяешь каждый эл-т на то что больше он нуля или нет, если да то в память сумму индексов этого эл-та и т. п.

Или тебе программный код нужно
Роман Бондаренко да, именно программный код. Если можно...
Аанн нет, не усе так просто как говорит, Gennady! Задачка то с подковыркой - если бы это был приплюснутый С, так оно и есть! - там все массивы индексируются с нуля (к стати почему Генадий решил, что с единицы? тьфу. . хотя действительно +/-0 - какая разница)) , но Генадий забыл, что в семействе паскалей все сложней - там индексация массива может начинаться с любого целого числа, так что правильней будет вот так:

function SumOfIndexes(A: array of integer; Count: integer; First: integer): integer;
var
i : integer;
begin
result := 0;
for i := 0 to Count - 1 do
if A > 0 then result := result + i + first;
end;

перед тобой функция, которую нужно вставить в свободное место в модуле между ключевыми словами implementation и последним end. Она должна находиться выше того места в программе, где ты будешь ее вызывать, или объяви ее в заголовке модуля (спроси у шарящих, кто получает честно хотябы тройки должны это знать)

Модуль должен быть именно тем - в котором ты будешь ее вызывать - она считает сумму индексов положительных элементов любого массива целы чисел (и даже динамического - того, у которого число элементов меняется в ходе выполнения программы)

Функция принимает 3 параметра: это сам массив, далее количество элементов в массиве (проверяй внимательно: ошибешся - хана! Баг страшный - owerflow при чтении, главное тебе ничего не скажет - просто прочитает чужую ячейку памяти и посчитает неправильно, может сказать ERROR: инструкция по адресу ???обратилась по адресу &&&&&&& и т. д.) , далее индекс первого элемента (он прибавляется к счетчику цикла) .

Функция возвращает целое число - сумму, при подсчете учитывается индекс первого элемента.

Для преобразования суммы в текстовый формат для вывода используй функцию IntToStr();

И удачной сделки купли/продажи дипломного проекта!))
АА
Анон Аноним
2 040

Похожие вопросы