Вычисление средних расстояний между точками на плоскости
Разработать ООП для вычисления среднего расстояния от каждой точки заданного набора до остальных точек этого набора. Декартовы координаты точек набора должны передаваться программе парами целых чисел через аргументы командной строки. Полученные значения средних расстояний должны отображаться строками стандартного вывода. Программная реализация вычислений должна быть основана на разработке класса точки с приватными полями ее декартовых координат и конструктором инициализации их значений, публичными методами доступа к ним, а также дружественная функция вычисления расстояния между 2-мя точками. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех точек заданного набора и массива их адресов (программа average.cc).
//Программа average.cc
#include <stdio.h>
#include <math.h>
// класс точки плоскости
class Point2 {
private:
int x;
int y;
public:
Point2(int _x, int _y) : x(_x), y(_y) { }; // конструктор точки
int getx() { return x; }; // доступ к x
int gety() { return y; }; // доступ к y
friend double distance(Point2*, Point2*); // расстояние между 2-мя точками
}//Point2
// дружественная функция вычисления расстояния между двумя точками
double distance(Point2* r, Point2* q) {
double d2=(r->x-q->x)*(r->x-q->x)+(r->y-q->y)*(r->y-q->y);
return (sqrt(d2));
} // distance
//Основная функция
int main(int argc, char* argv[ ]) {
double sum; // суммарное расстояние от первой до остальных точек
Point2** p; // адрес массива адресов точек набора
Point2* t; // адрес текущей точки
int x,y; // координаты точки
int i=0;
int j=0; // номера точек набора
if(argc < 2)
return(-1); //анализ числа аргументов командной строки
p = new Point2*[argc]; // распределить память под массив адресов точек
while(++i < argc) { //цикл ввода точек из командной строки
sscanf(argv[ i ], "(%d%*c%d)", &x, &y)); // получение координат точки
p[ j ]=new Point2(x,y); // динамическое конструирование точки
j ++;
} // while
p[ j ]=NULL; // маркировка конца массива адресов точек набора
for (i=0; p[ i ] != NULL; i++) { // цикл вычисления средних расстояний
sum = 0.0; // инициализировать сумму расстояний до текущей точки
t = p[ i ]; // фиксировать адрес текущей точки
// цикл суммирования расстояний от текущей точки до остальных
for (j=0; p[ j ] != NULL; j++)
sum + = distance(t, p[ j ]); //вычисление среднего расстояния до текущей точки
printf("Dcp(%d;%d)=%f\n", t->getx(), t->gety(), sum/(argc-2)); // ->
} // for-i// освобождить дин. память точек набора по их адресамfor(j=0; p[ j ] != NULL; j++)
delete p[ j ];
delete [ ]p; // освобождить дин. память массива адресов точек
return 0; //корректное завершение программы
}// main
Варианты заданий для первой лабораторной работы
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу для вычисления декартовых координат вершин правильного шестиугольника с заданной длиной стороны, центр которого совпадает с началом координат, а две стороны параллельны оси X. Длина стороны шестиугольника должна передаваться программе аргументом командной строки ее вызова, а полученные координаты его вершин должны отображаться в потоке стандартного вывода. Программная реализация вычислений должна быть основана на разработке класса точки с приватными полями ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Кроме того, в классе должен быть предусмотрен статический метод для конструирования точки по полярным координатам. P01
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу для вычисления декартовых координат вершин правильного шестиугольника с заданной длиной стороны, центр которого совпадает с началом координат, а две стороны параллельны оси Y. Длина стороны шестиугольника должна передаваться программе аргументом командной строки ее вызова, а полученные координаты его вершин должны отображаться в потоке стандартного вывода. Программная реализация вычислений должна быть основана на разработке класса точки с приватными полями ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Кроме того, в классе должен быть предусмотрен статический метод для конструирования точки по полярным координатам. P02
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу для вычисления декартовых координат вершин квадрата с заданной длиной стороны и центром в начале координат, диагонали которого отклонены относительно координатных осей на заданный угол. Длина стороны квадрата и угол поворота его диагоналей должны передаваться программе аргументами командной строки ее вызова, а полученные координаты его вершин должны отображаться в потоке стандартного вывода. Программная реализация вычислений должна быть основана на разработке класса точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Необходимо также предусмотреть статический метод для конструирования точки по полярным координатам. P03
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу для вычисления декартовых координат вершин правильного восьмиугольника с заданной длиной стороны и центром в начале координат, у которого четыре вершины лежат на осях координат. Длина стороны этого восьмиугольника должна передаваться программе аргументом командной строки ее вызова, а полученные координаты его вершин должны отображаться в потоке стандартного вывода. Программная реализация вычислений должна быть основана на разработке класса точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Кроме того, в этом классе нужно предусмотреть статический метод для конструирования точки по полярным координатам. P04
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу для поиска точки из любого заданного набора точек на плоскости, суммарное расстояние которой до остальных точек этого набора будет минимально. Декартовые координаты всех точек должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной точки должны отображаться строкой стандартного вывода. В программе должен быть реализован класс точки с приватными полями ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Вычисление расстояния между парами любых точек должна обеспечивать внешняя функция. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех заданных точек и массива их адресов. P05
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу для поиска точки из любого заданного набора точек на плоскости, суммарное расстояние которой до остальных точек этого набора будет максимально. Декартовые координаты всех точек должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной точки должны отображаться строкой стандартного вывода. В программе должен быть реализован класс точки с приватными полями ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Вычисление расстояния между парами любых точек должна обеспечивать внешняя функция. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех заданных точек и массива их адресов. P06
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу для поиска пары наиболее близких точек из любого заданного набора точек на плоскости. Декартовые координаты всех его точек должны быть специфицированы парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары ближайших точек набора и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений, а также метод для вычисления расстояния до любой другой заданной точки. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех точек заданного набора и массива их адресов. P07
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска пары наиболее отдаленных точек из любого заданного набора точек на плоскости. Декартовые координаты всех его точек должны быть специфицированы парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары наиболее отдаленных точек и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений, а также метод для вычисления расстояния до любой другой заданной точки. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех точек заданного набора и массива их адресов. P08
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска точки любого заданного набора точек на плоскости, которая наиболее близка к началу координат. Декартовые координаты всех точек набора должны быть заданы парами целых чисел в аргументах командной строки вызова программы. Результатом выполнения программы должен быть стандартный вывод координат искомой точки и ее расстояния от начала координат. В программе необходимо реализовать класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Кроме того, в этом классе нужно предусмотреть компонентный метод вычисления расстояния точки от начала координат и обеспечить динамическое распределение памяти для всех заданных точек и массива их адресов. P09
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска точки любого заданного набора точек на плоскости, которая наиболее удалена от начала координат. Декартовые координаты всех точек набора должны быть заданы парами целых чисел в аргументах командной строки вызова программы. Результатом выполнения программы должен быть стандартный вывод координат искомой точки и ее расстояния от начала координат. В программе необходимо реализовать класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Кроме того, в этом классе нужно предусмотреть компонентный метод вычисления расстояния точки от начала координат и обеспечить динамическое распределение памяти для всех заданных точек и массива их адресов. P10
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу, которая для каждой точки из заданного набора точек на плоскости определяет ближайшую к ней точку этого набора. Декартовые координаты его точек должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученных пар точек и расстояния между ними должны отображаться строками стандартного вывода. В программе должен быть реализован класс точки с приватными полями ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Вычисление расстояния между парами точек должна обеспечивать дружественная функция этого класса. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех заданных точек и массива их адресов. P11
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу, которая для каждой точки из заданного набора точек на плоскости ищет наиболее удаленную от нее точку этого набора. Декартовые координаты его точек должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученных пар точек и расстояния между ними должны отображаться строками стандартного вывода. В программе должен быть реализован класс точки с приватными полями ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Вычисление расстояния между парами точек должна обеспечивать дружественная функция этого класса. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех заданных точек и массива их адресов. P12
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска в любом заданном наборе точек плоскости пары наиболее близких точек, которые находятся по разные стороны от оси Y. Декартовые координаты всех точек заданного набора должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары точек и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений, а также компонентный метод вычисления расстояния до любой другой заданной точки. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех точек заданного набора и массивов их адресов. P13
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска в любом заданном наборе точек плоскости пары наиболее отдаленных точек, которые находятся по разные стороны от оси Y. Декартовые координаты всех точек заданного набора должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары точек и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений, а также компонентный метод вычисления расстояния до любой другой заданной точки. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех точек заданного набора и массивов их адресов. P14
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска в любом заданном наборе точек плоскости пары наиболее близких точек, которые находятся по разные стороны от оси X. Декартовые координаты всех точек заданного набора должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары точек и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Вычисление расстояния между парами точек должна обеспечивать дружественная функция этого класса. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех точек заданного набора и массивов их адресов. P15
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска в любом заданном наборе точек плоскости пары наиболее отдаленных точек, которые находятся по разные стороны от оси X. Декартовые координаты всех точек заданного набора должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары точек и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Вычисление расстояния между парами точек должна обеспечивать дружественная функция этого класса. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех точек заданного набора и массивов их адресов. P16
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска в любом заданном наборе точек плоскости пары наиболее близких точек, которые разделены прямой с уравнением y = x. Декартовые координаты всех точек заданного набора должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары точек и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений, а также компонентный метод вычисления расстояния до любой другой заданной точки. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех точек заданного набора и массивов их адресов. P17
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска в любом заданном наборе точек плоскости пары наиболее отдаленных точек, которые разделены прямой с уравнением y = x. Декартовые координаты всех точек заданного набора должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары точек и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений, а также компонентный метод вычисления расстояния до любой другой заданной точки. Кроме того, в программе должно быть предусмотрено динамическое распределение памяти для всех точек заданного набора и массивов их адресов. P18
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска в любом заданном наборе точек плоскости пары наиболее близких точек, которые разделены прямой с уравнением y = −x. Декартовые координаты всех точек заданного набора должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары точек и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Вычисление расстояния между любыми парами точек должна выполнять внешняя функция. Кроме того, в программе нужно реализовать динамическое распределение памяти для всех точек заданного набора и массивов их адресов. P19
--------------------------------------------------------------------------------------------------------------------
Разработать объектно-ориентированную программу поиска в любом заданном наборе точек плоскости пары наиболее удаленных точек, которые разделены прямой с уравнением y = −x. Декартовые координаты всех точек заданного набора должны быть указаны парами целых чисел в аргументах командной строки вызова программы. Координаты полученной пары точек и расстояние между ними должны отображаться строкой потока стандартного вывода. В программе должен быть реализован класс точки с приватными полями для ее декартовых координат, публичными методами доступа к ним и конструктором инициализации их значений. Вычисление расстояния между любыми парами точек должна выполнять внешняя функция. Кроме того, в программе нужно реализовать динамическое распределение памяти для всех точек заданного набора и массивов их адресов. P20
--------------------------------------------------------------------------------------------------------------------
Дата добавления: 2021-07-22; просмотров: 512;