Консультация № 138779
31.05.2008, 12:12
0.00 руб.
0 1 1
Уважаемые эксперты, помогите, пожалуйста, реализовать с помощью функции одну программу. Написать функцию, которая для заданного линейного массива находит сумму его элементов, при том, что i(номер элемента) не делится на квадрат какого-то числа, большего 1.
Заранее спасибо.

Обсуждение

давно
Профессор
401888
1232
31.05.2008, 17:28
общий
это ответ
Здравствуйте, Верещагин Михаил!
Решение задачи в приложении. Даны необходимые пояснения.

Приложение:
uses crt;type Tmass=array[1..100]of integer;{тип массива}var a:Tmass; m,i:integer;function Summ(ms:Tmass;n:integer):integer;{передаем в функцию массив и его размерность, выдает сумму}var mn:set of byte; {вспомогательное множество} t,k,j,sum:integer; {разные локальные переменные}beginmn:=[]; {пустое множество}t:=round(sqrt(n)); {корень из n}for i:=2 to t do begin include(mn,sqr(i)); {наполняем множество квадратами чисел от 2 до корень из n} end;sum:=0;for i:=1 to n do begin k:=0; for j:=2 to t do begin{если номер i делится на квадрат, то считаем} if (i mod sqr(j) = 0)and(sqr(j) in mn) then k:=k+1; end; if k=0 then sum:=sum+a[i]; {если не делится ни на один квадрат, прибавляем к сумме} end;Summ:=sum;end;beginclrscr;randomize;write(‘m=‘);readln(m);for i:=1 to m do begin a[i]:=random(20); {создаем массив и выводим его на экран} write(a[i],‘ ‘); end;writeln;writeln(‘Summa=‘,Summ(a,m));{вызываем функцию}readlnend.
Форма ответа