Форум программистов, компьютерный форум CyberForum.ru

Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ exception при вызове функции по адресу (MAPILogon) http://www.cyberforum.ru/cpp-beginners/thread327670.html
Пытаюсь прикрутить MAPI для работы с почтой. ULONG (*pMAPILogon)(ULONG_PTR, LPSTR, LPSTR, FLAGS, ULONG, LPLHANDLE); //.................................... (FARPROC&)pMAPILogon = GetProcAddress(hMod, "MAPILogon"); //.................................... ULONG mapi_status = pMAPILogon(0, "test@mail", "123", MAPI_NEW_SESSION, 0, lplhSession); // exception Выбрасывает исключение
C++ Книжки по С++ Здравствуйте, я учусь на 1 курсе, где нам преподают си++. По сути нам объясняют как употреблять ключевые слова и что они "делают". Но как они конкретно влияют на программу я не пойму. Во время семестра у меня еще вылазило уйма вопросов, корень которых скрывался именно в понимании принципа работы компьютера. И так вопрос: Какие вы читали книжки, когда начали программировать, какая вам больше всего... http://www.cyberforum.ru/cpp-beginners/thread327659.html
Есть алгоритм для арбитражного торгового робота на РТС и ММВБ, нужны два - три партнера. C++
Арбитражный робот предполагает безубыточную торговлю. Как правило доход незначительный. В моем случае доходность от 1 до 10 % в день. Хочу написать его самостоятельно, но пока в программировании полный ноль. Вот и приглашаю к сотрудничеству в создании этого продукта программеров. Программеры учат меня писать - по ходу получают алгоритм. На мой взгляд вполне адекватное вознаграждение. В...
C++ Перегрузка функций
Моя последняя лаба=( Светлые умы, помогите... Выполнить задания пятой и шестой лабораторной работы, оформив каждый пункт задания в виде шаблона функции. Все необходимые данные должны передаваться им в качестве параметров. Пятая: 1) номер максимального элемента массива; 2) произведение элементов массива, расположенных между первым и вторым нулевыми элементами. Преобразовать массив таким...
C++ "Угадай число" (напишите программу, хочу проверить со своей). http://www.cyberforum.ru/cpp-beginners/thread327632.html
"Угадай число". Пользователю предлагается отгадать число за 10 попыток. Программа даёт подсказки вида больше, меньше.
C++ Заменить в каждой строке элементы с наибольшим значением нулём Дан текстовый файл, состоящий из одной или нескольких строк. Каждая строка файла содержит числа,разделенные пробелами. Заменить в каждой строке элементы с наибольшим значением нулём. Создать файл, который будет содержать данные исходного файла, а затем данные преобразованного файла. Пожалуйста. . . Очень надо. . .:( подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
03.07.2011, 21:45     Написать программу, определяющую радиус и центр окружности, проходящей по крайней мере через три различные точки заданного множества точек
Если еще актуально.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#define epsilon 0.0001
 
typedef struct {
  float x;
  float y;
} Point;
 
typedef struct {
  Point center;
  float radius;
} Circle;
 
int Compare(float a, float b) {
  return (fabs(a - b) < epsilon) ? 0 :
    ((a > b) ? 1 : -1);
}
 
float Distance(Point *a, Point *b) {
  return sqrt(pow(a->x - b->x, 2.) + pow(a->y - b->y, 2.));
}
 
Circle GetCircle(Point *a, Point *b, Point *c) {
  Circle result;
  result.center.x = result.center.y = result.radius = 0;
  if (Compare(b->x, a->x) == 0 || Compare(c->x, b->x) == 0)
    return result;
  float angle_a = (b->y - a->y) / (b->x - a->x);
  float angle_b = (c->y - b->y) / (c->x - b->x);
  if (Compare(angle_a, angle_b) == 0 || Compare(angle_a, 0.) == 0 ||
    Compare(angle_a, 0.) == 0)
    return result;
  result.center.x = (angle_a * angle_b * (a->y - c->y) + angle_b * (a->x + b->x) +
    angle_a * (b->x + c->x)) / (2. * (angle_b - angle_a));
  result.center.y = (-1. / angle_a) * (result.center.x - (a->x + b->x) / 2.) +
    (a->y + b->y) / 2.;
  result.radius = Distance(&result.center, a);
  return result;
}
 
int IsEmptySicrle(Circle *circle) {
  return (Compare(circle->center.x, 0.) == 0 &&
    Compare(circle->center.y, 0.) == 0 &&
    Compare(circle->radius, 0.) == 0);
}
 
int AllPointsInCircle(Circle *circle, Point *points, size_t number_of_points) {
  int i;
  if (IsEmptySicrle(circle)) return 0;
  for (i = 0; i < number_of_points; ++i)
    if (Compare(circle->radius, Distance(&circle->center, &points[i])) == -1)
      return 0;
  return 1;
}
 
int main(int argc, char *argv[]) {
  srand(time(NULL));
  const size_t number_of_points = 15;
  Point *points = (Point*)malloc(sizeof(Point) * number_of_points);
  int i, j, k;
 
  for (i = 0; i < number_of_points; ++i) {
    points[i].x = rand() % 1000 / 100.;
    points[i].y = rand() % 1000 / 100.;
    printf("(%.2f, %.2f) ", points[i].x, points[i].y);
  }
  printf("\n");
 
  for (i = 0; i < number_of_points - 2; ++i)
    for (j = i + 1; j < number_of_points - 1; ++j)
      for (k = j + 1; k < number_of_points; ++k) {
        Circle circle = GetCircle(&points[i], &points[j], &points[k]);
        if (AllPointsInCircle(&circle, points, number_of_points))
          printf("Found: (%.2f, %.2f) radius %.2f\n", circle.center.x,
            circle.center.y, circle.radius);
      }
  return 0;
}
 
Текущее время: 13:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru