Const N = 13; Var A:array[1..N] of integer; i,Max:integer; Begin {Заполнение массива} Randomize; Write('Исходный массив: '); For i:= 1 to N do Begin A[i]:=random(N); Write(A[i],' '); End; {Поиск максимума} Max:=1; For i:= 2 to N do if A[i]>A[Max] then Max:=i; {Домножение} For i:= 1 to Max-1 do if i mod 2 = 0 then A[i]:=A[i]*A[Max]; WriteLn; WriteLn('Max = A[',Max,'] = ',A[Max]); Write('Переработанный массив: '); For i:= 1 to N do Write(A[i],' '); End.
Установить раствор циркуля равный заданному радиусу. Установить ножку циркуля в точку А, провести окружность. Установить ножку циркуля в точку В, провести окружность. Есть ли точки пересечения? Нет - искомой окружности не существует. Да - Устанавливаем ножку циркуля в точку пересечения, проводим окружность.
(Точек пересечения может быть две, тогда можно построить две окружности. Или окружности могут соприкасаться в одной точке, тогда искомая окружность будет одна.)
Марина555
20.05.2021
Для начала задачу нужно решить чисто математически, решения приведены на листочках. Поскольку задача школьная, то вариант совпадения точек не рассматривается Алгоритмического языка не знаю, но поскольку это вариант псевдокода, то думаю алгоритм вполне понятен
алг Круг_по_двум_точкам_и_радиусу(арг действ Ax, арг действ Ay, арг действ Bx, арг действ By, арг действ r) дано | A,B,r надо | нарисовать окружность нач ввод Ax, Ay, Bx, By, r
действ dAB = ((Ax - Bx)^2 + (Ay - By)^2)^(0.5) // длина АВ действ h = (r^2-dAB^2/4)^(0.5) // высота и длина вектора ОМ
// М середина АВ действ Mx = (Ax + Bx) / 2 действ My = (Ay + By) / 2
//первый круг действ Ox = Mx + (Ay - By) * h/dAB действ Oy = My - (Ax - Bx) * h/dAB нарисовать_круг(Ox, Oy, r)
//второй круг Ox = Mx - (Ay - By) * h/dAB Oy = My + (Ax - Bx) * h/dAB нарисовать_круг(Ox, Oy, r) кон
//PascalABC.NET версия 3.3.1590 от 03.12.2017 //Если программа не запускается, то обновите версию
uses GraphABC; const zoom = 100;
var Ax, Ay, Bx, By, r: real;
begin readln(Ax, Ay, Bx, By, r);
var dAB := sqrt(sqr(Ax - Bx) + sqr(Ay - By)); // длина АВ var h := sqrt(r * r - dAB * dAB / 4); // высота и длина вектора ОМ
// М середина АВ var Mx := (Ax + Bx) / 2; var My := (Ay + By) / 2;
//первый круг var Ox := Mx + (By - Ay) * h / dAB; var Oy := My - (Bx - Ax) * h / dAB; DrawCircle(round(Ox * zoom), round(Oy * zoom), round(r * zoom));
//второй круг Ox := Mx - (By - Ay) * h / dAB; Oy := My + (Bx - Ax) * h / dAB; DrawCircle(round(Ox * zoom), round(Oy * zoom), round(r * zoom)); end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Все элементы массива с четными номерами, предшествующие первому по порядку максимальному элементу, домножить на этот элементпаскаль)
N = 13;
Var
A:array[1..N] of integer;
i,Max:integer;
Begin
{Заполнение массива}
Randomize;
Write('Исходный массив: ');
For i:= 1 to N do
Begin
A[i]:=random(N);
Write(A[i],' ');
End;
{Поиск максимума}
Max:=1;
For i:= 2 to N do
if A[i]>A[Max] then Max:=i;
{Домножение}
For i:= 1 to Max-1 do
if i mod 2 = 0 then A[i]:=A[i]*A[Max];
WriteLn;
WriteLn('Max = A[',Max,'] = ',A[Max]);
Write('Переработанный массив: ');
For i:= 1 to N do
Write(A[i],' ');
End.
Пример:
Исходный массив: 3 10 0 5 8 11 9 1 1 12 11 12 7
Max = A[10] = 12
Переработанный массив: 3 120 0 60 8 132 9 12 1 12 11 12 7