Var j,I:integer;
s: real;
Begin
s:=0.0;
For i:=1 to N do
For j:=1 to M do
If Odd(i) then
if Mas[i,j]>0 then s:=s+Mas[i,j];
Sum:=s;
end;
ЗАДАЧА 19 Написать процедуру расчета корней квадратного уравнения, задаваемого тремя коэффициентами, и возвращающую количество корней и их значения. Процедура не должна ничего выводить на экран. (Все ситуации определяются количеством корней).
Procedure uravnenie(a,b,c:real;var kor1,kor2:real;Var K:integer);
var
D:real;
begin
D:=b*b-4*a*c; {вычисляем дискриминант}
if D>0 then begin; {если он больше нуля}
kor1:=(-b+sqrt(D))/(2*a);
kor2:=(-b-sqrt(D))/(2*a);
K:=2; {количество корней=2}
end;
if D=0 then begin{если дискриминант равен нулю}
kor1:=-b/(2*a);
kor2:=0.0;
K:=1; {уравнение имеет 1 корень}
end;
if D<0 then K:=0; {уравнение не имеет корней при отрицательном дискриминанте}
end;
ЗАДАЧА 20 Написать функцию логического (булевского) типа, возвращающую в вызывающую программу значение TRUE, если сумма элементов передаваемого ей произвольного вещественного массива (длиной N элементов), не превосходит заданной величины (передаваемой в процедуру в качестве одного из параметров) и FALSE а противном случае. N не больше 999.
Type
Massiv = array [1..999] of real; { описание типа массива}
Function obr (var Mas:massiv; var Nst:integer;K:real):boolean;
var
otv:boolean;
i:integer;
sum:real;
begin
sum:=0.0; ;{обнуляем переменную для суммы чисел}
for i:=1 to Nst do
sum:=sum+Mas[i]; ;{находим сумму чисел}
if sum<K then otv:=TRUE {если константа больше, то TRUE }
else otv:=FALSE; {иначе FALSE }
obr:=otv; {возвращаем значение в функцию}
end;
ЗАДАЧА 21 Написать функцию логического типа, возвращающую в вызывающую программу значение TRUE, если в передаваемом ей произвольном целочисленном массиве (длиной N элементов) больше положительных (включая 0) элементов, чем отрицательных, и FALSE в противном случае. N не больше 999.
Type
Massiv = array [1..999] of integer; { описание типа массива}
Function obrabotka (var Mas:massiv; var Nst:integer):boolean;
var
otv:boolean;
pol,otric,i:integer;
begin
pol:=0;{переменная для количества положительных чисел}
otric:=0; {переменная для количества отрицательных чисел}
for i:=1 to Nst do
if (Mas[i]<0) then otric:=otric+1
else pol:=pol+1;
if pol>otric then otv:=TRUE {если положительных больше то TRUE }
else otv:=FALSE; {если отрицательных больше то FALSE }
obrabotka:=otv; {возвращаем значение в функцию}
end;
ЗАДАЧА 22 Написать процедуру, возвращающую в вызывающую программу среднее арифметическое только отрицательных элементов передаваемого ей произвольного вещественного массива (длиной N элементов). N не больше 999. (Из всех операторов основной программы написать только описание типа массива).
Type
Massiv = array [1..999] of real; { описание типа массива}
FUNCTION srednee(Var Mas:Massiv; N:integer):real;
Var I,j:integer;
sum:real;
begin
sum:=0;
j:=0;
for i:=1 to N do
if Mas[i]<0 then {если отрицатетельное}
begin
sum:= sum+Mas[i]; {находим сумму}
j:=j+1; {считаем количество отрицательных элементов}
end;
srednee:=sum/j; {возвращаем среднее арифметическое в основную программу}
end;
ЗАДАЧА 23 Написать процедуру, которая в передаваемом ей произвольном квадратном вещественном массиве размерами N x N меняет местами элементы главной и обратной диагонали. При описании типа массива учесть, что N не может быть больше 20.
Type
Massiv = array [1..20,1..20] of real; { описание типа массива}
Procedure obmen (Var Mas:Massiv;kol:integer);