Вариант 6 1. Определить, имеется ли среди цифр натурального числа N хотя бы одна единица.
2. Вычислить сумму ряда с погрешностью в окрестности точки ноль, то есть при :
3. Вычислить значение выражения:
4. Числа Фибоначчи определяются формулами:
Вычислить сумму всех чисел Фибоначчи, которые не превосходят заданного целого числа m.
5. Дано натуральное число k. Напечатать k-тую цифру последовательности: 12345678910111213…, в которой выписаны подряд все натуральные числа.
6. Дана последовательность из целых чисел, которые вводятся по одному. За последним числом вводится нуль. Найти два наименьших числа последовательности.
const
m = 3; n = 3;
var
a : array[1..n, 1..m] of integer;
max1: array[1..n] of integer;
min1: array[1..n] of integer;
max2: array[1..m] of integer;
min2: array[1..m] of integer;
i, j, min, max, count: integer;
begin
for i:=1 to n do
for j:=1 to m do
begin
write ('Введите элемент матрицы [', i, ', ', j, ']: ');
readln (a[i, j]);
end;
for i:=1 to n do
begin
min:=a[i, 1]; max:=a[i, 1];
for j:=2 to m do
begin
if a[i, j]<min then min:=a[i, j];
if a[i, j]>max then max:=a[i, j];
end;
min1[i]:=min; max1[i]:=max;
end;
for j:=1 to m do
begin
min:=a[1, j]; max:=a[1, j];
for i:=2 to n do
begin
if a[i, j]<min then min:=a[i, j];
if a[i, j]>max then max:=a[i, j];
end;
min2[j]:=min; max2[j]:=max;
end;
writeln;
writeln ('Введенная матрица: ');
for i:=1 to n do
begin
for j:=1 to m do write (a[i, j]:6);
writeln;
end;
writeln;
count:=0;
for i:=1 to n do
for j:=1 to m do
if ((a[i, j]=max1[i]) and (a[i, j]=min2[j]))
or ((a[i, j]=max2[j]) and (a[i, j]=min1[i])) then
begin
writeln ('Седловая точка: [', i, ', ', j, ']');
inc (count);
end;
writeln ('Всего седловых точек: ', count);
end.
n = 4;
m = 6;
var
a: array[1..n, 1..m] of integer; // основной массив
Rext: array[1..n, 1..2] of integer; // номера столбцов с min и max в строках
Cext: array[1..2, 1..m] of integer; // номера строк с min и max в столбцах
i, j, amin, amax: integer;
begin
// заполняем массив А случайными числами
Randomize;
writeln('Исходный массив');
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := random(100) - 50;
write(a[i, j]:4);
end;
writeln;
end;
// Заполняем массив Rext n x 2
for i := 1 to n do
begin
amin := 10000; //заведомо больше a[i,j]
amax := -10000; //заведомо меньше a[i,j]
for j := 1 to m do
begin
if amin > a[i, j] then begin
amin := a[i, j]; Rext[i, 1] := j
end;
if amax < a[i, j] then begin
amax := a[i, j]; Rext[i, 2] := j
end
end;
end;
// Заполняем массив Cext 2 x m
for j := 1 to m do
begin
amin := 10000; //заведомо больше a[i,j]
amax := -10000; //заведомо меньше a[i,j]
for i := 1 to n do
begin
if amin > a[i, j] then begin
amin := a[i, j]; Cext[1, j] := i
end;
if amax < a[i, j] then begin
amax := a[i, j]; Cext[2, j] := i
end
end
end;
writeln;
// Ищем седловые точки
writeln('*** Седловые точки ***');
for i := 1 to n do
begin
j := Rext[i, 1];
if Cext[2, j] = i then
write('[', i, ',', j, '] ')
else begin
j := Rext[i, 2];
if Cext[1, j] = i then
write('[', i, ',', j, '] ')
end
end;
writeln
end.
Тестовое решение:
Исходный массив
35 34 -17 -33 20 -29
-8 -31 -4 -20 8 -1
-39 -7 -12 27 42 9
32 13 -17 37 19 -24
*** Седловые точки ***
[2,5]