Умоляю помогите СРОЧНО РЕШИТЬ 4, 5, 6. Составить программу, которая печатает true, если точка с координатами (х, у) принадлежит
Умоляю помогите СРОЧНО РЕШИТЬ 4, 5, 6. Составить программу, которая печатает true, если точка с координатами (х, у) принадлежит заштрихованной области, и false в противном случае.
Во вложении - раскрашенная для пояснения решения картинка.
Главное в таких задачах - правильно составить условие попадания в заштрихованную область, а затем построить по нему корректное логическое выражение.
Не совсем корректная постановка задачи требует сделать одно допущение. Нам не указали, входят ли в заштрихованные области их границы. Будем считать, что входят и на этом основании все отношения будет нестрогими (т.е.составленными при помощи ≤ и ≥). Если границы контуров входить не должны, отношения строятся строгими и содержат операции < и >.
Первое, с чего нужно начать - составить уравнения линий, описывающих контуры. Это чистая математика и разбирать тут процесс нахождения уравнений таких линий смысла я не вижу.
Далее, нужно руководствоваться очевидным: если нужная нам область лежит "выше" или на линии контура, описанного уравнением вида y=f(x), то такая область описывается в виде y ≥ f(x). Аналогично, область расположенная "ниже" или на линии такого контура описывается в виде y ≤ f(x)
Задание 4 "Желтая" область y≤x+3, "зеленая" y≥x-3, "красная" y≥5-x, "голубая" y≤11-x. Все эти четыре условия должны выполняться одновременно, поэтому их связываем логическим "И" (конъюнкцией): (y≤x+3) ∧ (y≥x-3) ∧ (y≥5-x) ∧ (y≤11-x) Соответственно, в языке программирования (далее рассматриваем паскаль) это логическое выражение запишется в виде (y<=x+3) and (y>=x-3) and (y>=5-x) and (y<=11-x)
Задание 5 Здесь два круговых сектора, расположенных в I и IV координатных четвертях. Уравнение окружности в декартовых координатах хорошо известно: x²+y²=R², где К - радиус окружности. I четверть образуется пересечением "желтой" и "голубой" зон, т.е. (x≥0) ∧ (y≥0). И в этой четверти располагается сектор с уравнением x²+y²=4² ⇒ x²+y²=16. В итоге получаем (x≥0) ∧ (y≥0) ∧ (x²+y²≤16) Аналогично в IV-й, "желто-зеленой" четверти пишем (x≥0) ∧ (y≤0) ∧ (x²+y²≤25). Осталось объединить эти области по ИЛИ", т.е. точка может попадать или в одну область, или в другую, но не в обе одновременно. ((x≥0) ∧ (y≥0) ∧ (x²+y²≤16)) ∨ ((x≥0) ∧ (y≤0) ∧ (x²+y²≤25)) Тут можно сделать небольшое упрощение, вынеся за скобки (x≥0). (x≥0) ∧ (((y≥0) ∧ (x²+y²≤16)) ∨ ((y≤0) ∧ (x²+y²≤25))). Вспоминаем, что операция ∧ "старше" чем ∨ и это позволяет избавиться от лишней пары скобок. (x≥0) ∧ ((y≥0) ∧ (x²+y²≤16) ∨ (y≤0) ∧ (x²+y²≤25)) На паскале: (x>=0) and ((y>=0) and (x*x+y*y<=16) or (y<=0) and (x*x+y*y<=25))
Задание 6 Здесь сложный контур, который мы можем разбить на два прямоугольника и свести задачу к аналогичной предыдущей. "Желтый" прямоугольник описывается набором условий (x≥-2) ∧ (x≤3) ∧ (y≥2) ∧ (y≤5) Зеленый прямоугольник (x≥3) ∧ (x≤5) ∧ (y≥2) ∧ (y≤3) И здесь следует объединение по "ИЛИ": ((x≥-2) ∧ (x≤3) ∧ (y≥2) ∧ (y≤5)) ∨ ((x≥3) ∧ (x≤5) ∧ (y≥2) ∧ (y≤3)) Можно вынести за скобки y≥2 (y≥2) ∧ ((x≥-2) ∧ (x≤3) ∧ (y≤5) ∨ (x≥3) ∧ (x≤5) ∧ (y≤3)) И на паскале: (y>=2) and ((x>=-2) and (x<=3) and (y<=5) or (x>=3) and (x<=5) and (y<=3))
Только теперь можно написать программу - все остальное, по сути, к информатике отношения не имело и это как раз одна из причин по которой информатика оказывается в школе одним из самых сложных предметов: при решении задач приходится привлекать самые разные знания из других предметов - математики, физики, экономики и т.д.
Программа для задания 4 var x,y:real; begin Write('Введите через пробел координаты точки (x,y): '); Read(x,y); Writeln((y<=x+3) and (y>=x-3) and (y>=5-x) and (y<=11-x)) end.
<u>Пример программы</u> Введите через пробел координаты точки (x,y): 3.1 3.4 True
Остальные две программы пишутся совершенно аналогично: вставляем логическое выражение, составленное для паскаля, в процедуру Writeln():
Для задания 5: Writeln((x>=0) and ((y>=0) and (x*x+y*x<=16) or (y<=0) and (x*x+y*y<=25)))
Для задания 6: Writeln((y>=2) and ((x>=-2) and (x<=3) and (y<=5) or (x>=3) and (x<=5) and (y<=3)))
Var s:string; i,n,w:integer; begin writeln('Введите текст'); readln(s); s:=s+' '; n:=length(s); for i:=1 to n do if (s[i]='а') and (s[i+1]=' ') then inc(w); writeln('Кол-во = ',w); <span>end.</span>
Var a:array[1..10] of real; i:integer; begin for i:=1 to 10 do a[i]:=(2*i-1)/cos(i); for i:=1 to 10 do writeln(i,'->',a[i]); readln; end.<span> </span>
Const n=25; var a:array[1..n] of integer; i,j,p:integer; begin for i:=1 to n do a[i]:=random(50)-20; for i:=1 to n do write(a[i]:4); writeln; for i:=1 to 12 do if (a[i] mod 2 = 0) then a[i]:=2*a[i]; for i:=14 to n-1 do begin for j:=14 to n-1 do if a[j]<=a[j+1] then begin p:=a[j]; a[j]:=a[j+1]; a[j+1]:=p; end; end; for i:=1 to n do write(a[i]:4); <span>end.</span>