Const m = 3; n = 4; var a: array[1..m, 1..n] of integer; b: array[1..n] of integer; i,j,k,maxm:integer; begin for i:=1 to m do begin for j:=1 to n do begin write('A[',i,',',j,']= '); readln (a[i,j]); if a[i,j]<=0 then b[j]:=-1; end; end;
for i:=1 to n do begin if b[i]=0 then begin writeln('Столбец №',i,' Все положительные'); break; end else if i=n then writeln('Таких столбцов не было'); end; for i:=1 to m do begin for j:=1 to n do write(a[i,j]:5); writeln; end; end.
Вся заштрихованная область представляет собой решение некоторой системы уравнений. Например, I четверть координатной плоскости задается x > 0, y > 0. Этот случай относится к тому, что область принадлежит той самой I четверти.
Теперь у нас есть два варианта решения: проверить принадлежности x к отрезку (0; 7), а затем разбить на два условия: если точка принадлежит отрезку (0;5], то координата y должна принадлежать (0;5). Иначе если координата икс в отрезке [5;7), то координата y должна быть меньше некоторой линейной функции, проходящей через точки (5;5) и (7;0)
Второй вариант (он будет оптимальнее): сначала проверить принадлежность координаты y в отрезке (0;5). Если это так, то проверить выполнение условия 0 < x < f(y), где f(y) - это некоторая линейная функция.
Давайте найдем эту линейную функцию.
Если линейная функция задается уравнением y = kx + b, то справедлива система:
От второго отнимаем первое уравнение, получаем 2k = -5, или k = -2.5, а b будет при этом равно 17,5
Теперь найдем обратную функцию (решать будем по второму варианту)
Теперь, точка считается внутри фигуры, если выполняется:
0 < y < 5
0 < x < 7 - 0.4y
Сама программа:
program task;
var x, y: real;
begin
writeln('Введите координаты точки х и y: ');
readln(x, y);
if ((y > 0) and (y < 5)) then begin
if ((x > 0) and (x < 7 - 0.4*y)) then writeln('Попадает')
n = 4;
var a: array[1..m, 1..n] of integer;
b: array[1..n] of integer;
i,j,k,maxm:integer;
begin
for i:=1 to m do begin
for j:=1 to n do begin
write('A[',i,',',j,']= ');
readln (a[i,j]);
if a[i,j]<=0 then b[j]:=-1;
end;
end;
for i:=1 to n do begin
if b[i]=0 then begin
writeln('Столбец №',i,' Все положительные');
break;
end
else
if i=n then writeln('Таких столбцов не было');
end;
for i:=1 to m do begin
for j:=1 to n do write(a[i,j]:5);
writeln;
end;
end.
Тестовое решение:
A[1,1]= 7
A[1,2]= 2
A[1,3]= 1
A[1,4]= -9
A[2,1]= -2
A[2,2]= 2
A[2,3]= 4
A[2,4]= 1
A[3,1]= 7
A[3,2]= 2
A[3,3]= 3
A[3,4]= 1
Столбец №2 Все положительные
7 2 1 -9
-2 2 4 1
7 2 3 1
Объяснение:
Немного математики:
Вся заштрихованная область представляет собой решение некоторой системы уравнений. Например, I четверть координатной плоскости задается x > 0, y > 0. Этот случай относится к тому, что область принадлежит той самой I четверти.
Теперь у нас есть два варианта решения: проверить принадлежности x к отрезку (0; 7), а затем разбить на два условия: если точка принадлежит отрезку (0;5], то координата y должна принадлежать (0;5). Иначе если координата икс в отрезке [5;7), то координата y должна быть меньше некоторой линейной функции, проходящей через точки (5;5) и (7;0)
Второй вариант (он будет оптимальнее): сначала проверить принадлежность координаты y в отрезке (0;5). Если это так, то проверить выполнение условия 0 < x < f(y), где f(y) - это некоторая линейная функция.
Давайте найдем эту линейную функцию.
Если линейная функция задается уравнением y = kx + b, то справедлива система:
От второго отнимаем первое уравнение, получаем 2k = -5, или k = -2.5, а b будет при этом равно 17,5
Теперь найдем обратную функцию (решать будем по второму варианту)
Теперь, точка считается внутри фигуры, если выполняется:
0 < y < 5
0 < x < 7 - 0.4y
Сама программа:
program task;
var x, y: real;
begin
writeln('Введите координаты точки х и y: ');
readln(x, y);
if ((y > 0) and (y < 5)) then begin
if ((x > 0) and (x < 7 - 0.4*y)) then writeln('Попадает')
else writeln('Не попадает')
end;
end.