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

Найти близколежащие точки на плоскости - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ создание класса строк String http://www.cyberforum.ru/cpp-beginners/thread51268.html
Создать класс строка с функциями сложения(конкатенация),вычитания и сравнения строк. Пожауйста помогите решить или объясните как сделать.
C++ Алгоритмы сложения и умножения рациональных чисел Здравствуйте, такое вот задание: Разработать алгоритмы на языке С, моделирующие выполнение сложения и умножения над рациональными числами. Как бы я само задание не очень понимаю. Буду благодарен, если кто-нибудь поможет разобраться. http://www.cyberforum.ru/cpp-beginners/thread51261.html
Метод Гауса, Visual 2008 C++
Не могу понять, что происходит с программой..только осваиваю visual...запускаю, происходит выполнение и консольное окно закрывается, ошибок компиляции вроде нет...помогите как запустить ее на visuale 2008..( #include "stdio.h" #include "iostream.h" // возвращает true если LU-разложение для матрицы, // состоящей из строк и столбцов с currRowAndColumn п numberOfEquation, было найдено...
C++ Найти min и max матрицы
Допоможіть розвязати задачу на С++.Задана квадратна матриця А=(Aij)i=1,...4;j=1,...4.Знайти min i max цієї матриці. Перевод: Помогите решить задачу на с++. Задана квадратная матрица А=(Aij)i=1,...4;j=1,...4., найти min и max этой матрицы
C++ Составить программу вывода на экран наибольшего из трех введенных с клавиатуры чисел http://www.cyberforum.ru/cpp-beginners/thread51230.html
я не знаю с++ а тут сказали лаб делать помогите вроде задачи легкие 1 Составить программу для вычисления разницу двух чисел, определяемых в теле программе. 2 Составить программу вывода на экран наибольшего из трех введенных с клавиатуры чисел 3 Составить программу вычисляющую количество месяцев, через которое количество производимой продукции будет равно X, если начальное...
C++ Unit,Header,Imp Здравствуйте! main.cpp //#include "unit1.h" //#include "unit2.h" #include "unit3.h" int main() { return 0; } unit1.h подробнее

Показать сообщение отдельно
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.09.2009, 21:16     Найти близколежащие точки на плоскости
останутся только те объекты, у которых диапазон координат различается на 0.0001, как абцисах, так и ординатах. При этом объектов может быть либо несколько, либо ни одного.
Условия непонятно описаны.
1)
Пусть есть всего две точки (x1,y1), (x2,y2).
Значит если fabs(x1-x2) == 0.0001 == fabs(y1-y2) тогда берем ?
А в остальных случаях не берем ?
Или нужно чтобы было <= ?

2)
Непонятно что делать когда точек больше двух.
Мы должны сравнивать все точки попарно и все пары должны удовлетворять условию ?
Или достаточно чтобы хотя бы одна пара попадала в условие ?
В этом случае может быть на плоскости несколько кластеров вокруг нескольких центров.
Или нужно чтобы такой центр был один - и все точки были близки от точек этого кластера ?
Или имеется в виду, что все точки должны быть близки от одной точки ?

Добавлено через 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
/* Thread 51290 */
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
 
/********************************************************************/
#define INPUT_NAME  "test.search.txt"
 
 
/********************************************************************/
int parse_x_y( const char *buf, int buf_size, double *px, double *py );
 
 
/********************************************************************/
int main( void ) {
 
double x,y;
 
int buf_size;
char buf[1024];
FILE *fin= NULL;
 
 
fin= fopen( INPUT_NAME, "r" );
if ( fin == NULL ) {
    fprintf( stderr, "Error opening file %s\n", INPUT_NAME );
    exit( 1 );
}
 
for ( ; ; ) {
    
    /* Read line */
    if ( fgets( buf, sizeof(buf), fin ) == NULL ) {
        if ( feof( fin ) ) { break; }
        fprintf( stderr, "Error reading file\n" );
        exit( 1 );
    }
    buf_size= strlen( buf );
    if ( buf_size>0 && buf[buf_size-1] == '\n' ) { buf[--buf_size]= '\0'; }
 
    /* Parse line */
    if ( parse_x_y( buf, buf_size, &x, &y ) ) {
        fprintf( stderr, "Invalid format in file\n" );
        exit( 1 );
    }
    
    /* Print */
    printf( "%.10f %.10f\n", x, y );
 
}
 
fclose( fin ); fin= NULL;
 
return 0;
 
} /* main() */
 
 
/********************************************************************/
int parse_x_y( const char *buf, int buf_size, double *px, double *py ) {
 
char *endptr;
 
 
/* Check line */    
if ( buf_size != 408 ) { return 1; }
 
*px= strtod( &buf[238], &endptr );
if ( *px == 0.0 ) {
    if ( &buf[238] == endptr ) { return 1; }
}
 
*py= strtod( &buf[252], &endptr );
if ( *py == 0.0 ) {
    if ( &buf[252] == endptr ) { return 1; }
}
 
return 0;
 
} /* parse_x_y() */
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru