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

Из множества точек на плоскости сформировать множество точек , расстояние от которых до прямой меньше заданной величины - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить начальный и конечный номера элементов массива http://www.cyberforum.ru/cpp-beginners/thread19991.html
Хех,у меня вот какая задача:Определить нач и конечный номера эл. одномерного массива,составляющих макс. по длинне последовательность,значения элементов которой монотонно возрастают. Алгоритм нахождения из массива этой самой последовательности есть: int cikl(int v,int *a,int t) { int k,l,m,y,i; m=0; l=0; s=a; flag=0; for(i=0;i<t;i++)
C++ Помогите подкорректировать!!!:p Огрррромная просьба!!!Все есть и условие и программа,но!!!! Условие:Дана Двумерная матрица m*n и одномерный массив,посчитать сумму каждого столбца матрицы,номер которого не является элементом одномерного массива.Счет столбцов в моей проге идет с нулегого. Загвоз вот в чем: #include <stdio.h> #include <conio.h> #include <math.h> #include <stdlib.h> #include<string.h> #include <fstream.h> http://www.cyberforum.ru/cpp-beginners/thread19989.html
программа по двойственному симплекс методу C++
здравствуйте! очень нужна помощ! написала программу, но выдает неверный ответ, знаю в каком месте неправильно, но как должно быть никак не додумаюсь, помогите пожалуйста! вот код: задача-найти оптимальную табдицу с помощью двойственного симплекс-метода, ошибка в функции min_J Выбор включаемой переменной производится следующим образом. Вычисляются отношения коэффициентов z-строки к отрицательным...
C++ Ресурсы
Подскажите каким образом можно открыть для чтения ресур? нужно открыть так чтобы можно было читать функцией ReadFile(); Смог сделать только зная оффсет этого ресурса в файле приложения. HANDLE file=OpenFile(__argv,...) SetFilePointer(file,offset,...) ReadFile(file,...)
C++ Сгенерировать N^2 случайных чисел... http://www.cyberforum.ru/cpp-beginners/thread19980.html
Помогиет, кто сможет!:help: Сгенерировать N^2 случайных чисел. Выделить в каждом из чисел дробну часть. Найти суммы из первых к цифр каждой дробной части чисел.Сформировать из их массив (таблицу) из N строк, в каждом из которых по N столбиков. Найти минимальное и максимальное числа в таблицы, а также сумму чисел n-го столбика. На экран вывести в виде строки случайные числа, полученный массив...
C++ Задача на функции!!!!! Объясните пожалуйста что такое функции!:sorry:Помогите применить их вот в этой проге....очень нужно!!) #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <dos.h> int main(void) { int i,x,y,a,b,c,d,s,z,r; int gdriver=DETECT, gmode, errorcode; подробнее

Показать сообщение отдельно
Loose My Braines
0 / 0 / 0
Регистрация: 29.12.2008
Сообщений: 12

Из множества точек на плоскости сформировать множество точек , расстояние от которых до прямой меньше заданной величины - C++

29.12.2008, 06:28. Просмотров 981. Ответов 0
Метки (Все метки)

Формулировка задания: Из множества точек на плоскости сформировать множество точек , расстояние от которых до прямой меньше заданной величины и упорядочить их в порядке убывания расстояния.

Математическая постановка задачи:
Дано:
Входные данные – значение переменной коэффициентов А, В и С, наибольшее расстояние от точек множества Р до прямой (D), массив E, содержащий координаты точек по оси Х, массив F, содержащий координаты точек по оси У.
Выходные данные – массив Р, содержащий точки в порядке убывания расстояния между ними и заданной прямой.
Способ решения:
1) Ввод коэффициентов А, В и С, расстояния от точек множества Р до прямой (D),при этом если А=0, В=0, то и С=0;
2) Т.к. расстояние от точки до прямой определяется выражением:
, где и - координаты точки, то проверяем R на выполнение условия . Точки, удовлетворяющие этому условию, входят в данное множество Р, остальные нет.
3) Сортировка точек, в порядке убывания расстояния;

Ну помогите!!!сортирооооовка!!!
Ввод и вывод с файлов!!!

Добавлено через 5 минут 8 секунд
вот текст,но мне надо,чтобы ввод из разных файлов!!!!!!!!
и там еще како-то косяк(((
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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
 
#define MAX_LEN 50
 
float A;
float B;
float C;
float D;
 
float E[MAX_LEN];
unsigned int E_Len = 0;
float F[MAX_LEN];
unsigned int F_Len = 0;
 
struct Point
{
float x;
float y;
float len;
};
 
Point P[MAX_LEN];
unsigned int P_Len = 0;
 
char GetVal( char buf[] )
{
if( strcmp(buf,"A=")==0 )
return 'A';
if( strcmp(buf,"B=")==0 )
return 'B';
if( strcmp(buf,"C=")==0 )
return 'C';
if( strcmp(buf,"D=")==0 )
return 'D';
if( strcmp(buf,"E=")==0 )
return 'E';
if( strcmp(buf,"F=")==0 )
return 'F';
return 0;
}
 
float LenToLine( unsigned int i )
{
float chisl = A*E[i]+B*F[i]+C;
float znam = sqrt(A*A+B*B);
if(chisl<0) chisl*=-1;
 
return chisl/znam;
}
 
void main(void)
{
clrscr();
FILE* input = fopen("input.txt","r");
if(!input)
{
printf("Cannot open input.txt\n");
return;
}
 
char ch;
char buf[256];
char read_flag = 0;
int buf_pos = 0;
fseek(input, 0, SEEK_SET);
do
{
ch = fgetc(input);
buf[buf_pos] = ch;
buf[buf_pos+1] = '\0';
buf_pos++;
 
if( read_flag!=0 && !((ch>=48 && ch<=57)||ch==46||ch==45) )
{
buf[buf_pos] = '\0';
float res = atof(buf);
switch(read_flag)
{
case 'A':
A = res;
break;
case 'B':
B = res;
break;
case 'C':
C = res;
break;
case 'D':
D = res;
break;
case 'E':
E[E_Len] = res;
E_Len++;
break;
case 'F':
F[F_Len] = res;
F_Len++;
break;
}
buf_pos=0;
buf[buf_pos] = '\0';
if(ch!=';')
read_flag=0;
}
 
char res = GetVal(buf);
if( res!=0 )
{
read_flag = res;
buf_pos=0;
buf[buf_pos] = '\0';
}
} while (ch != EOF);
fclose(input);
if(A==0&&B==0) C=0;
 
printf("Ishodnui dannue:\n");
printf("A=%f\nB=%f\nC=%f\nD=%f\n",A,B,C,D);
int i;
for( i=0; i<E_Len; i++)
{
printf(" %d = (%f;%f) len=%f\n",i,E[i],F[i],LenToLine(i));
}
printf("\nVuhodnue dannue:\n");
 
P_Len = 0;
for( i=0; i<E_Len; i++ )
{
if( LenToLine(i) < D )
{
P[P_Len].x = E[i];
P[P_Len].y = F[i];
P[P_Len].len = LenToLine(i);
P_Len++;
}
}
 
if(P_Len==0)
{
printf("Net takih vershin.\n");
FILE* output = fopen("output.txt","w");
fprintf(output,"Net takih vershin.\n");
fclose(output);
getch();
return;
}
 
int flag = 0;
int j;
Point TP;
do
{
flag = 1;
for( j = 0; j<P_Len-1; j++)
{
if(P[j].len<P[j+1].len)
{
TP = P[j];
P[j] = P[j+1];
P[j+1] = TP;
flag = 0;
}
}
}while(flag!=1);
 
for(i=0; i<P_Len; i++)
{
printf(" %d = (%f;%f) len=%f\n",i,P[i].x,P[i].y,P[i].len);
}
 
FILE* output = fopen("output.txt","w");
for( i=0; i< P_Len; i++)
{
fprintf(output, "P[%d] x=%f y=%f\n",i,P[i].x,P[i].y);
}
fclose(output);
getch();
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru