ЗАДАЧА 1 Написать функцию, вычисляющую сумму всех элементов, не находящихся в крайних столбцах и строках передаваемого ей квадратного вещественного массива размером N х N элементов, причем N - любое целое от 3 до 10. (Из операторов основной программы привести только описание типа массива). Имя и размер массива передавать в функцию через параметры.
Type
Massiv = array [1..10,1..10] of real; { описание типа массива}
Procedure InpMN ( Var N:integer); {процедура ввода массива }
Begin
Writeln(‘введите N’ );
Repeat
Readln(N);
If (N>10) or (N<3) then
Writeln ('zadai snova');
until (N<=10) and (N=>3);
end;
FUNCTION Sum(Var Mas:Massiv; N:integer):real;
Var j,i:integer;
s:real;
Begin
s:=0;
For i:=2 to (N-1) do {строки без крайних}
For j:=2 to (N-1) do { столбцы без крайних}
s:=s+Mas[i,j];
Sum:=s;
end;
ЗАДАЧА 2 Написать функцию, которая вычисляет сумму всех отрицательных элементов четных столбцов передаваемого ей произвольного вещественного массива размерами 10 х 10 элементов
FUNCTION Sum(Var Mas:Massiv):real;
Var j,I:integer;
s:real;
Begin
s:=0;
For i:=1 to 10 do
For j:=1 to 10 do
If not Odd(j) then { если четный столбец, то}
if Mas[i,j]<0 then {если отрицательное число}
s:=s+Mas[i,j]; { считаем сумму }
Sum:=s; { возвращаем значение в основную программу}
end;
ЗАДАЧА 3 Написать функцию, которая вычисляет среднее арифметическое произвольного одномерного вещественного массива длиной N элементов. Если количество элементов в массиве, передаваемом в функцию меньше 1, функция должна равняться нулю. N не больше 999.
Type
Massiv = array [1..999] of real; { описание типа массива}
FUNCTION srednee(Var Mas:Massiv; N:integer):real;
Var i,j:integer;
sum,w:real;
begin
sum:=0;
j:=0;
if N<1 then {если меньше 1 элемента }
begin
srednee:=0; {присваиваем функции 0 }
exit; {возвращаемся в основную программу }
end
else
begin
for i:=1 to N do
begin
sum:= sum+Mas[i];
j:=j+1;
end;
w:=sum/j; end; { находим среднее арифметическое}
srednee:=w; {возвращаем значение в основную программу }
end;
ЗАДАЧА 4 Написать процедуру, переставляющую произвольный одномерный вещественный массив в обратном порядке (имя и длину массива - N не больше 999 включить в список параметров)
Type
Massiv = array [1..999] of real; { описание типа массива}
PROCEDURE obrabotka (var Mas:massiv;Nstr:integer);
var Mas2:massiv;
i,j:integer;
begin
j:=Nstr;
for i:=1 to Nstr do begin
Mas2[j]:=Mas[i];
j:=j-1;
end;
for i:=1 to Nstr do
Mas[i]:=Mas2[i];
end;
ЗАДАЧА 5 Написать функцию целого типа, которая вычисляет порядковый номер минимального положительного элемента передаваемого ей произвольного одномерного вещественного массива длиной N элементов. Если решения нет, функция должна возвращать 0. N не больше 999.
FUNCTION number(Var Mas:Massiv; N:integer):integer;
Var I,j:integer;
min:real;
begin
min:=1000.0;
j:=0;
for i:=1 to N do
if ((Mas[i]<min) and (Mas[i]>0)) then {если положительное число меньше минимального}
begin min:=Mas[i]; {то его значение присваиваем минимальному}
number:=i; end; {и сохраняем его номер}
if (min=1000.0) then number:=0; {если таких чисел не было, возвращаем 0}
end;
ЗАДАЧА 6 Написать процедуру транспонирования (т.е. зеркального отображения относительно главной диагонали) произвольной квадратной вещественной матрицы размерами не более 10 х 10 элементов (размер и имя матрицы передавать процедуре через параметры)
Procedure Transp (Var Mas:Massiv;N:integer);
Var I,j:integer;
K:massiv; {транспонированная матрица}
Begin
for i:=1 to N do begin
for j:=1 to N do begin
K[i,j]:=Mas[j,i]; {транспонирование}
write (Fout,K[i,j]:6:2); {вывод матрицы в файл}
end;
writeln(Fout); {новая строка матрицы}
end;
end;
ЗАДАЧА 7 Написать функцию целого типа, которая вычисляет сумму всех положительных элементов нечетных строк передаваемого ей произвольного целочисленного массива размерами М х N элементов. М и N не больше 100.
{в основной программе ограничение на ввод М и N }
Repeat
Writeln (‘введите N’);
Readln(N);
Writeln (‘введите M’);
Readln(M);
Until (N<100) and (M<100);
FUNCTION Sum(Var Mas:Massiv; N,M:integer):integer;
Var j,i,s:integer;
Begin
s:=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;
ЗАДАЧА 8 Написать процедуру расчета среднеарифметического (но только тех чисел, которые находятся в интервале от 1.0 до 2.0) произвольного одномерного вещественного массива длиной N элементов, имя и размеры которого передаются через параметры. N не больше 999. Если решения нет, процедура должна возвращать значение -1.
PROCEDURE obrabotka (var Mas:massiv;Nstr:integer;var sum:real);
var
summa:real;
i,j:integer;
begin
j:=0;
summa:=0.0;
for i:=1 to Nstr do begin
if ((Mas[i]>1.0) and (Mas[i]<2.0)) then {если число в заданном интервале}
begin summa:=summa+Mas[i]; {то суммируется}
j:=j+1; {считаем количество чисел удовлетворяющих условию}
end;
end;
if (j=0) then {если таких чисел не было}
sum:=0 else {возвращаем 0 в основную программу}
sum:=summa/j; {возвращаем среднее арифметическое }
end;
ЗАДАЧА 9 Написать функцию целого типа, вычисляющую сумму всех тех элементов передаваемого ей произвольного целочисленного массива (длиной N элементов), которые без остатка делятся на целое число "к". В качестве параметров функции передавать имя массива, его длину (не более 999) и значение "к".
Type
Massiv = array [1..999] of integer; { описание типа массива}
FUNCTION sum(Var Mas:Massiv; N,K:integer):integer;