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

Из задоного множества точек на плоскости выбрать две различные точки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Разделение на файлы http://www.cyberforum.ru/cpp-beginners/thread826778.html
Может кто-то объяснить как разделять код на файлы? (я так понял нужно создать заглавный файл ****.h , создать файл с таким же именем с расширением**** .cpp, в **** .h файле нужно сделать описание классов и записать прототипы функций; в ****.cpp их реализацию, в третьем файле только ф-я main...). Куда например нужно писать перегруженные функции? Когда использовать #define и #pragma once? ...
C++ Удаление элемента из двусвязного списка Надо удалить элемент из двусвязного списка, если выполняется условие (2013-(current->god)<3). Я пытаюсь как могу, но что то все равно косяки идут. Подскажите... #include <conio.h> #include <windows.h> #include <iostream> using namespace std; //Создать структуру с именем Sotrudnik с полями: //фамилия, имя, должность, год поступления на работу. http://www.cyberforum.ru/cpp-beginners/thread826775.html
Транспонирование одномерного массива C++
int main() { setlocale(LC_ALL,".1251"); int mas ; int n = 0; cout <<"Введите размер массива"; cin >> n; cout << "Введите члены последовательности(через пробел):\n";
сохранение в файл C++
Всем привет. Люди добрые помогите пж сохранить введенный результат в файл. #include <iostream.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <string.h> FILE *fl; typedef struct
C++ перевод из Delphi в Builder http://www.cyberforum.ru/cpp-beginners/thread826759.html
type Point = record color : TColor; x, y : Integer; end; type PointArray = array of array of Point; var pa: PointArray;
C++ Проблемы с загрузкой DLL Здравствуйте! Скачал отсюда библиотеку: phash.org Создал консольный проект проект( в Visual C++ 2010 Express): #include "stdafx.h" #include <iostream> #include <windows.h> подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
03.04.2013, 16:19     Из задоного множества точек на плоскости выбрать две различные точки
Воспользуйтесь тэгами форматирования кода -- читать невозможно.

Это не будет работать, потому что алгоритм неверен.
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
#include <iostream>
#include <istream>
#include <cmath>
#include <ctime>
#include <cstdlib>
 
struct Point {
  double x, y;
  Point() : x(0), y(0) {}
  Point(double x, double y) : x(x), y(y) {}
};
 
// возвращает расстояние между двумя точками
double getDistance(const Point &a, const Point &b) {
  return sqrt(pow(a.x - b.x, 2.0) + pow(a.y - b.y, 2.0));
};
 
// возвращает расстояние между двумя точками по
// индексами матрице расстояний
double getDistance(int a, int b, int size, double **distances) {
  if (a == b) {
    return 0.0;
  }
  if (a < b) {
    double c = a;
    a = b;
    b = c;
  }
  return distances[a][b];
};
 
double **formDistanceMatrix(Point *points, int numberOfPoints) {
  double **result = new double*[numberOfPoints];
  
  for (int i = 0; i < numberOfPoints; ++i) {
    result[i] = new double[i];
    for (int j = 0; j < i; ++j) {
      result[i][j] = getDistance(points[i], points[j]);
    }
  }
 
  return result;
};
 
void deleteDistanceMatrix(double **matrix, int numberOfPoints) {
  for (int i = 0; i < numberOfPoints; ++i) {
    delete [] matrix[i];
  }
  delete [] matrix;
}
 
int getNumberOfPointsInRadius(int pointId, double radius,
  int numberOfPoints, double **distanceMatrix) {
  int result = 0;
  for (int i = 0; i < numberOfPoints; ++i) {
    if (i != pointId && getDistance(pointId, i, numberOfPoints, 
      distanceMatrix) < radius) {
      ++result;
    }
  }
  return result;
}
  
 
int main(int argc, char *argv[]) {
  srand(time(0));
  
  int numberOfPoints = 5 + rand() % 3;
  Point *points = new Point[numberOfPoints];
  
  for (int i = 0; i < numberOfPoints; ++i) {
    points[i] = Point(rand() % 10, rand() % 10);
    std::cout << "[" << points[i].x << ", " << points[i].y <<
      "]" << std::endl;
  }
  
  double radius = (2 + rand() % 3);
  
  double **distanceMatrix = formDistanceMatrix(points, numberOfPoints);
  
  for (int i = 0; i < numberOfPoints; ++i) {
    std::cout << "Points in radius of " << radius << " around point " <<
      i << ": " << getNumberOfPointsInRadius(i, radius,
      numberOfPoints, distanceMatrix) << std::endl;
  }
  
  for (int i = 0; i < numberOfPoints - 1; ++i) {
    for (int j = i; j < numberOfPoints; ++j) {
      if (i != j && (getNumberOfPointsInRadius(i, radius,
        numberOfPoints, distanceMatrix) == getNumberOfPointsInRadius(j,
        radius, numberOfPoints, distanceMatrix))) {
        std::cout << "Point [" << points[i].x << ", " << points[i].y << 
          "]" << " has same number of points as [" << points[j].x <<
          ", " << points[j].y << "]" << std::endl;
      }
    }
  }
  
  deleteDistanceMatrix(distanceMatrix, numberOfPoints);
  delete [] points;
  
  std::cin.get();
  return 0;
}
 
Текущее время: 18:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru