Написать программу, согласно варианту, которая определяет, попадает ли точка с заданными координатами x, y в область, закрашенную на рисунке серым цветом. Координаты должны x и y вводиться с клавиатуры, ответ выводиться на экран. на использование условного оператора if PASCAL
Если лень перебирать вручную, можно воспользоваться программой
var k,l,r,x,f:integer; begin f := 3001; l := 0; r := 65534; x := (l + r) div 2; k := 1; while (x <> f) and (l < r) do begin writeln(k,' ',l,' ',r,' ',x); k := k + 1; if f < x then r := x - 1 else l := x + 1; x := (l + r) div 2 end; writeln(k,' ',l,' ',r,' ',x); end.
Microsoft QBasic m = 10 n = 15 DIM a(1 TO m, 1 TO n) AS INTEGER DIM x(1 TO n) AS INTEGER, y(1 TO m) AS INTEGER RANDOMIZE TIMER CLS PRINT "Исходная матрица" FOR i = 1 TO m FOR j = 1 TO n a(i, j) = INT(99 * RND) PRINT USING "###"; a(i, j); NEXT j PRINT NEXT i INPUT "Строка для Х и столбец для Y (через запятую): ", p, q PRINT "Вектор-строка Х" FOR j = 1 TO n x(j) = a(p, j) PRINT USING "###"; x(j); NEXT j PRINT PRINT "Вектор-столбец Y" FOR i = 1 TO m y(i) = a(i, q) PRINT USING "###"; y(i); NEXT i PRINT
1. 0..65534 -> 32767
2. 0..32766 -> 16383
3. 0..16382 -> 8191
4. 0..8190 -> 4095
5. 0..4094 -> 2047
6. 2048..4094 -> 3071
7. 2048..3070 -> 2559
8. 2560..3070 -> 2815
9. 2816..3070 -> 2943
10. 2944..3070 -> 3007
11. 2944..3006 -> 2975
12. 2976..3006 -> 2991
13. 2992..3006 -> 2999
14. 3000..3006 -> 3003
15. 3000..3002 -> 3001
Если лень перебирать вручную, можно воспользоваться программой
var k,l,r,x,f:integer;
begin
f := 3001;
l := 0;
r := 65534;
x := (l + r) div 2;
k := 1;
while (x <> f) and (l < r) do
begin
writeln(k,' ',l,' ',r,' ',x);
k := k + 1;
if f < x then r := x - 1
else l := x + 1;
x := (l + r) div 2
end;
writeln(k,' ',l,' ',r,' ',x);
end.
m = 10
n = 15
DIM a(1 TO m, 1 TO n) AS INTEGER
DIM x(1 TO n) AS INTEGER, y(1 TO m) AS INTEGER
RANDOMIZE TIMER
CLS
PRINT "Исходная матрица"
FOR i = 1 TO m
FOR j = 1 TO n
a(i, j) = INT(99 * RND)
PRINT USING "###"; a(i, j);
NEXT j
PRINT
NEXT i
INPUT "Строка для Х и столбец для Y (через запятую): ", p, q
PRINT "Вектор-строка Х"
FOR j = 1 TO n
x(j) = a(p, j)
PRINT USING "###"; x(j);
NEXT j
PRINT
PRINT "Вектор-столбец Y"
FOR i = 1 TO m
y(i) = a(i, q)
PRINT USING "###"; y(i);
NEXT i
PRINT
Тестовое решение:
Исходная матрица
51 91 87 95 48 54 64 92 2 91 84 56 60 87 6
96 55 81 11 46 42 38 14 40 73 33 97 16 90 65
65 41 52 1 30 62 68 32 16 86 80 72 94 76 50
63 44 84 83 19 29 95 75 88 9 13 78 45 72 51
98 98 93 70 19 36 16 21 38 87 59 26 48 11 52
77 24 11 91 68 49 72 25 39 54 31 55 57 92 55
79 19 37 67 40 72 91 76 13 75 47 48 12 64 44
87 24 62 73 58 65 2 90 21 63 79 67 92 68 27
57 42 82 21 94 1 19 1 12 1 84 27 86 42 89
54 12 78 75 33 87 34 78 38 50 40 11 19 6 2
Строка для Х и столбец для Y (через запятую): 4,8
Вектор-строка Х
63 44 84 83 19 29 95 75 88 9 13 78 45 72 51
Вектор-столбец Y
92 14 32 75 21 25 76 90 1 78