Ближе к началу координат та из точек, чей квадрат расстояния до начала координат x^2 + y^2 меньше. У меня описан алгоритм что_ближе, который принимает аргументами 4 вещественных числа - координаты точек и выводит сообщение о том, какая из точек ближе.
У меня для примера рассматриваются точки (1, 1) и (2, 0) - первая точка ближе, (4, 8) и (1, 7) - вторая точка ближе, и (3, 4) и (0, 5) - точки на одинаковом расстоянии.
Вы можете задавать значения и с клавиатуры, и записывать их сразу в текст программы, в зависимости от того, что требуется.
алг что_ближе(вещ x1, y1, x2, y2) нач вещ d d := (x1*x1 + y1*y1) - (x2*x2 + y2*y2) выбор при d < 0: вывод "Первая точка ближе", нс при d > 0: вывод "Вторая точка ближе", нс иначе вывод "Точки на одинаковом расстоянии", нс все кон
У меня для примера рассматриваются точки (1, 1) и (2, 0) - первая точка ближе, (4, 8) и (1, 7) - вторая точка ближе, и (3, 4) и (0, 5) - точки на одинаковом расстоянии.
Вы можете задавать значения и с клавиатуры, и записывать их сразу в текст программы, в зависимости от того, что требуется.
алг
нач
что_ближе(1, 1, 2, 0)
что_ближе(4, 8, 1, 7)
что_ближе(3, 4, 0, 5)
кон
алг что_ближе(вещ x1, y1, x2, y2)
нач
вещ d
d := (x1*x1 + y1*y1) - (x2*x2 + y2*y2)
выбор
при d < 0: вывод "Первая точка ближе", нс
при d > 0: вывод "Вторая точка ближе", нс
иначе вывод "Точки на одинаковом расстоянии", нс
все
кон
Если в 4-й и 5-й строках исходного кода на Python 1 отступ, а в 6-й - два отступа, то эквивалент на C++ может быть записан в следующем виде:
#include <iostream>
#include <string>
#include <sstream>
#include <vector>
int main()
{
char c;
int n, k;
std::vector<int> left,right;
std::string line,nk;
std::vector<char> bahn;
std::getline(std::cin, line);
for (int i = 0; i < line.length(); i++)
if (line[i] != ' ') nk.push_back(line[i]);
else { n = atoi(nk.c_str()); nk = std::string(); }
k = atoi(nk.c_str());
for (int i=0;i<n;i++) bahn.push_back('I');
for (int i = 0; i < k; i++)
{
nk.clear();
std::getline(std::cin, line);
for (int i = 0; i < line.length(); i++)
if (line[i] != ' ') nk.push_back(line[i]);
else { left.push_back(atoi(nk.c_str())); nk = std::string(); }
right.push_back(atoi(nk.c_str()));
}
line = std::string(bahn.begin(), bahn.end());
for (int i = 0; i < k; i++)
for (int j = left.at(i) - 1; j < right.at(i); j++)
line[j] = '.';
std::cout << line;
return 0;
}