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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Builder Замена двухзначных чисел числительными на русском http://www.cyberforum.ru/cpp-beginners/thread51281.html
Доброго времени суток, Интересует такой вопрос: Есть программа,которая заменяет числа на буквы.Допустим 5+3=8 она заменяет на: пять + три = восемь. Если я пишу: 5+7=12,то программа выдаёт: пять + семь = одиндва. Как можно сделать,чтобы программа выдавала не одиндва,а двенадцать?И так двузначные цисла до 20. #include "Unit1.h"...
C++ создание класса строк String Создать класс строка с функциями сложения(конкатенация),вычитания и сравнения строк. Пожауйста помогите решить или объясните как сделать. http://www.cyberforum.ru/cpp-beginners/thread51268.html
Алгоритмы сложения и умножения рациональных чисел C++
Здравствуйте, такое вот задание: Разработать алгоритмы на языке С, моделирующие выполнение сложения и умножения над рациональными числами. Как бы я само задание не очень понимаю. Буду благодарен, если кто-нибудь поможет разобраться.
Метод Гауса, Visual 2008 C++
Не могу понять, что происходит с программой..только осваиваю visual...запускаю, происходит выполнение и консольное окно закрывается, ошибок компиляции вроде нет...помогите как запустить ее на visuale 2008..( #include "stdio.h" #include "iostream.h" // возвращает true если LU-разложение для матрицы, // состоящей из строк и столбцов с currRowAndColumn п numberOfEquation, было найдено...
C++ Найти min и max матрицы http://www.cyberforum.ru/cpp-beginners/thread51244.html
Допоможіть розвязати задачу на С++.Задана квадратна матриця А=(Aij)i=1,...4;j=1,...4.Знайти min i max цієї матриці. Перевод: Помогите решить задачу на с++. Задана квадратная матрица А=(Aij)i=1,...4;j=1,...4., найти min и max этой матрицы
C++ Составить программу вывода на экран наибольшего из трех введенных с клавиатуры чисел я не знаю с++ а тут сказали лаб делать помогите вроде задачи легкие 1 Составить программу для вычисления разницу двух чисел, определяемых в теле программе. 2 Составить программу вывода на экран наибольшего из трех введенных с клавиатуры чисел 3 Составить программу вычисляющую количество месяцев, через которое количество производимой продукции будет равно X, если начальное... подробнее

Показать сообщение отдельно
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
11.10.2009, 16:15     Найти близколежащие точки на плоскости
Программа

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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
/* Thread 51290 */
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
 
/********************************************************************/
#define MAX_LINE_SIZE       1024
#define LINES_DEF_SIZE      256
#define MAX_DIFF            0.0001
 
 
/********************************************************************/
typedef struct {
    double x, y;
    int flag;
} point_flag_t;
 
typedef struct {
    int size, max_size;
    char **lines;
} objects_t;
 
#define objects_size(arg_pobj)          ((arg_pobj)->size)
#define objects_line(arg_pobj,arg_i)    ((arg_pobj)->lines[(arg_i)])
 
 
/********************************************************************/
void do_process( const char *in_name, const char *out_name );
 
int read_objects_file( objects_t *pobj, const char *name );
void free_objects( objects_t *pobj );
 
int parse_x_y( const char *buf, double *px, double *py );
 
 
/********************************************************************/
int main( int argc, char *argv[] ) {
 
argc--; argv++;
 
if ( argc != 2 ) {
    fprintf( stderr, "Usage: search in.txt out.txt" );
    exit( 2 ) ;
}
 
do_process( argv[0], argv[1] );
return 0;
 
} /* main() */
 
 
/********************************************************************/
void do_process( const char *in_name, const char *out_name ) {
 
int i, j;
int errcode;
 
int line_size;
char *line;
 
int obj_size;
objects_t obj;
 
double x, y;
point_flag_t *ppoint= NULL;
FILE *fout= NULL;
 
 
/* Read */
if ( read_objects_file( &obj, in_name ) ) { goto err_read; }
 
/* Check */
obj_size= objects_size( &obj );
if ( obj_size == 0 ) { goto err_no_obj; }
 
/* Allocate points */
ppoint= (point_flag_t*)malloc( obj_size*sizeof(point_flag_t) );
if ( ppoint == NULL ) { goto err_nomem; }
 
/* Parse x,y and setup point */
for ( i= 0; i<obj_size; i++ ) {
    if ( parse_x_y( objects_line( &obj, i ), &x, &y ) ) { goto err_format; }
    ppoint[i].x= x; ppoint[i].y= y;
    ppoint[i].flag= 0;
}
 
/* Compare loop */
for ( i= 0; i<obj_size; i++ ) {
    for ( j= i+1; j<obj_size; j++ ) {
        if ( fabs( ppoint[i].x-ppoint[j].x )<=MAX_DIFF &&
            fabs( ppoint[i].y-ppoint[j].y )<=MAX_DIFF ) {
            ppoint[i].flag= ppoint[j].flag= 1;
            /* printf( "near %d %d\n", i, j ); */
            break;
        }
    }
}
 
/* Create out */
fout= fopen( out_name, "wb" );
if ( fout == NULL ) { goto err_create; }
 
/* Write out loop */
for ( i= 0; i<obj_size; i++ ) {
    if ( !ppoint[i].flag ) { continue; }
 
    line= objects_line( &obj, i );
    line_size= strlen( line );
    errcode= fprintf( fout, "%s\n", line );
    if ( line_size+1 != errcode ) { goto err_write; }
 
}
 
/* Close out */
if ( fclose( fout ) ) { goto err_close; }
fout= NULL;
 
/* Free ppoint */
free( ppoint ); ppoint= NULL;
 
return;
 
 
/* Processing errors */
err_read:
fprintf( stderr, "Error reading file\n" );
goto err_all;
 
err_no_obj:
fprintf( stderr, "No objects\n" );
goto err_all;
 
err_nomem:
fprintf( stderr, "No memory\n" );
goto err_all;
 
err_format:
fprintf( stderr, "Invalid format\n" );
goto err_all;
 
err_create:
fprintf( stderr, "Error creating file\n" );
goto err_all;
 
err_write:
fprintf( stderr, "Error writing file\n" );
goto err_all;
 
err_close:
fprintf( stderr, "Error closing file\n" );
goto err_all;
 
err_all:
exit( 1 );
 
} /* do_process() */
 
 
/********************************************************************/
int read_objects_file( objects_t *pobj, const char *name ) {
 
int buf_size, max_size;
char buf[MAX_LINE_SIZE], *line, **lines;
FILE *fin= NULL;
 
 
/* Init */
pobj->size= 0; pobj->max_size= 0;
pobj->lines= NULL;
 
/* Open */
fin= fopen( name, "r" );
if ( fin == NULL ) { goto err_read; }
 
/* Loop */
for ( ; ; ) {
    
    /* Read line */
    if ( fgets( buf, sizeof(buf), fin ) == NULL ) {
        if ( feof( fin ) ) { break; }
        goto err_read;
    }
    buf_size= strlen( buf );
    if ( buf_size>0 && buf[buf_size-1] == '\n' ) { buf[--buf_size]= '\0'; }
 
    /* Check space and realloc */
    if ( pobj->size >= pobj->max_size ) {
 
        max_size= (pobj->max_size!=0) ? 2*pobj->max_size : LINES_DEF_SIZE;
        lines= (char**)realloc( pobj->lines, max_size*sizeof(char*) );
        if ( lines == NULL ) { goto err_nomem; }
            
        pobj->max_size= max_size; pobj->lines= lines;
 
    }
    
    /* Store */
    line= malloc( buf_size+1 );
    if ( line == NULL ) { goto err_nomem; }
    memcpy( line, buf, buf_size+1 );
    pobj->lines[pobj->size]= line; pobj->size++;
 
}
 
/* Close */
if ( fclose( fin ) ) { goto err_close; }
fin= NULL;
 
/* Return */
return 0;
 
 
/* Processing errors */
err_read:
err_close:
err_nomem:
return 1;
 
} /* read_objects_file() */
 
 
/********************************************************************/
void free_objects( objects_t *pobj ) {
 
int i;
 
 
for ( i= 0; i<pobj->size; i++ ) {
    if ( pobj->lines[i] != NULL ) { free( pobj->lines[i] ); }
}
free( pobj->lines );
 
pobj->size= pobj->max_size= 0;
pobj->lines= NULL;
    
} /* free_objects() */
 
 
/********************************************************************/
int parse_x_y( const char *buf, double *px, double *py ) {
 
int buf_size;
char *endptr;
 
 
/* Check line */    
buf_size= strlen( buf );
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() */


Результат работы на приведенном файле
Код
 1398.85  294.67 1.155     71.11    263.93 20.494 20.177 99.999 21.735 21.418 99.999 99.999 99.999  0.619  0.940 99.999 99.999 99.999  99.999  99.999  99.999  99.999  0.009  0.007  0.181  0.164  0.109  0.099   36   32 99.999 99.999   99  21.326773432  16.125337796  9  1 22.21 2008  7 31 2454678.87595153   130  g.MP9401              /home/Obs/cfht/1013384p_10.fits           2006 SX368            2112  4644
 1397.33  296.11 1.857    137.01    195.64 20.494 20.177 99.999 21.022 20.706 99.999 99.999 99.999  0.619  0.940 99.999 99.999 99.999  99.999  99.999  99.999  99.999  0.027  0.031  0.181  0.164  0.109  0.099   36   32 99.999 99.999   99  21.326768067  16.125264613  9  1 22.21 2008  7 31 2454678.87595153   130  g.MP9401              /home/Obs/cfht/1013384p_10.fits           2006 SX368            2112  4644
  250.06 1732.64 1.096     68.64    315.09 20.494 20.177 99.999 21.773 21.456 99.999 99.999 99.999  0.619  0.940 99.999 99.999 99.999  99.999  99.999  99.999  99.999  0.004  0.004  0.074  0.067  0.109  0.099   36   32 99.999 99.999   99  21.322697056  16.051438964  9  1 22.21 2008  7 31 2454678.87595153   130  g.MP9401              /home/Obs/cfht/1013384p_10.fits           2006 SX368            2112  4644
  261.39 1731.96 1.999    371.65     16.25 20.494 20.177 99.999 19.939 19.622 99.999 99.999 99.999  0.619  0.940 99.999 99.999 99.999  99.999  99.999  99.999  99.999  0.035  0.045  0.071  0.064  0.109  0.099   36   32 99.999 99.999   99  21.322737559  16.051472168  9  1 22.21 2008  7 31 2454678.87595153   130  g.MP9401              /home/Obs/cfht/1013384p_10.fits           2006 SX368            2112  4644
 
Текущее время: 15:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru