Исполнитель чертёжник перемещается на координатной плоскости, оставляя след в виде линии. чертёжник может выполнять команду сместиться на (a, b), где a, b – целые числа. эта команда перемещает чертёжника из точки с координатами (x,y) в точку с координатами (x + a, y + b). например, если чертёжник находится в точке с координатами (4, 2), то команда сместиться на (2, −3) переместит чертёжника в точку (6, −1). цикл повтори число раз последовательность команд конец повтори означает, что последовательность команд будет выполнена указанное число раз (число должно быть натуральным). чертёжнику был дан для исполнения следующий алгоритм (число повторений и величины смещения в первой из повторяемых команд неизвестны): начало сместиться на (2, 6) повтори …раз сместиться на (…, …) сместиться на (1, -2) конец повтори сместиться на (-4, 10) конец в результате выполнения этого алгоритма чертёжник возвращается в исходную точку. какое наибольшее число повторений могло быть указано в конструкции «повтори … раз»?
Объяснение:
Сначала заполним массив, затем выведем его содержимое.
---
Sub Main()
Dim a as Double = 1
Dim b as Double = 15
Dim h as Double = 0.92
Dim n as Integer = int((b - a) / h)
Dim Z() As Double = New Double(n) {}
Dim i as Double
For i = 0 To n
Z(i) = Math.Cos(a + h * i) + Math.Tan(a + h * i)
Next
For i = 0 To n
Console.WriteLine("Z(" & i+1 & ") = " & Z(i))
Next
End Sub
---
Результат работы этой программы:
Z(1) = 2.09771003052304
Z(2) = -3.0884493200958
Z(3) = -1.26594678050156
Z(4) = -0.103295451547362
Z(5) = 30.831517973736
Z(6) = -0.0383774051794511
Z(7) = 1.21343345934296
Z(8) = 2.67822720165008
Z(9) = -2.28928714730523
Z(10) = -1.13533602598861
Z(11) = 0.265586431867902
Z(12) = -7.87130103019394
Z(13) = 0.283584171679959
Z(14) = 1.3388270225723
Z(15) = 4.05676371484264
Z(16) = -1.89632897888172
Мы знаем, что периметр прямоугольника равен Р = 2*(a+b), а площадь равна S=a*б, где a и b - две стороны прямоугольника.
Тогда b =S/a, а периметр P =2a +2b или 2a+2S/a. Отсюда
a*P = 2a² +2S. Имеем квадратное уравнение:
a²-a*P/2+S=0, решая которое относительно а (сторона прямоугольника) при известных коэффициентах P и S, получим значение сторон прямоугольника.
В программе я не проверяю, что введены именно положительные периметр и площадь, надеясь на внимательность вводящего данные.
Итак:
program storona;
uses crt; { используем экран}
var
b,P,S,d,x1,x2: real; {наши переменные}
begin
clrscr; {чистим экран}
write('Wwedite perimetr P: ');
readln(P);
write('Wwedite ploshad S: ');
readln(S);
{Вычисляем дискриминант}
b:=-P/2;
d:= b*b - 4*S;
if d > 0 then {Если дискриминант >0 - все хорошо}
begin
x1:= (-b + sqrt(d))/2;
x2:= (-b - sqrt(d))/2;
writeln('Storona1 = ',x1:0:2); {ответ с двумя знаками после запятой}
writeln('Storona2 = ',x2:0:2);
end;
{Если дискриминант равен 0, то тоже неплохо: у нас квадрат}
if d = 0 then
begin
x1:= -(b/2);
writeln('Storona1 = ',x1:0:2);
writeln('Storona2 = ',x1:0:2);
end;
{Если дискриминант меньше 0, плохо, выводим сообщение}
if d < 0 then
begin
writeln('Ошибка в данных);
end;
readln;
end.