Для начала задачу нужно решить чисто математически, решения приведены на листочках. Поскольку задача школьная, то вариант совпадения точек не рассматривается Алгоритмического языка не знаю, но поскольку это вариант псевдокода, то думаю алгоритм вполне понятен
алг Круг_по_двум_точкам_и_радиусу(арг действ 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) кон
Объяснение:
C ++
// C ++ реализация вышеуказанного подхода
#include <bits/stdc++.h>
using namespace std;
#define N 4
// Функция для поворота матрицы на 90 градусов по часовой стрелке
void rotate90Clockwise(int a[N][N])
{
// Обходить каждый цикл
for (int i = 0; i < N / 2; i++) {
for (int j = i; j < N - i - 1; j++) {
// Меняем местами элементы каждого цикла
// по часовой стрелке
int temp = a[i][j];
a[i][j] = a[N - 1 - j][i];
a[N - 1 - j][i] = a[N - 1 - i][N - 1 - j];
a[N - 1 - i][N - 1 - j] = a[j][N - 1 - i];
a[j][N - 1 - i] = temp;
}
}
}
// Функция для матрицы печати
void printMatrix(int arr[N][N])
{
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++)
cout << arr[i][j] << " ";
cout << '\n';
}
}
// Код драйвера
int main()
{
int arr[N][N] = { { 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 },
{ 13, 14, 15, 16 } };
rotate90Clockwise(arr);
printMatrix(arr);
return 0;
}
Поскольку задача школьная, то вариант совпадения точек не рассматривается
Алгоритмического языка не знаю, но поскольку это вариант псевдокода, то думаю алгоритм вполне понятен
алг Круг_по_двум_точкам_и_радиусу(арг действ 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)
кон