Помогите

Чарли

New Member
25.12.2013
2
0
#1
дана задача: задано два множества точек на плоскости. В первом множестве найдите хотя бы одну точку, сумма расстояний от которой (от любой из точки первого множества) до точек второго множества превышала бы заданную величину.
она решена, но в программе в которой надо ее сделать она не работает
#include <iostream>
#include <time.h>
#include <math.h>
#include <cstdlib>
#include <windows.h>
using namespace std;

int main()
{
SetConsoleOutputCP(1251);
srand(time(NULL));
bool star=false;
cout<<"Введите кол-во точек на плоскости: ";
int size,value;
cin>>size;
cout<<"Введите величину: ";
cin>>value;
int array_x1[size],array_y1[size],array_x2[size],array_y2[size];
///Первое множество точек х1,у1 генерируются в передлах 0-30
///Второе множество точек х2,у2 генерируются в передлах 70-100
for(int i=0;i<size;++i)
{
array_x1=rand()%30;
array_x2=70+rand()%30;
array_y1=rand()%30;
array_y2=70+rand()%30;
cout.width(3);
cout<<"x1="<<array_x1<<" y1="<<array_y1<<" x2="<<array_x2<<" y2="<<array_y2<<endl;
}
cout<<"Расстояние превышает заданную величину:\n";
for(int i=0;i<size;++i)
{
for(int j=i+1;j<size;++j)
{
int x=pow(abs(array_x1-array_x2[j]),2);///x^2
int y=pow(abs(array_y1-array_y2[j]),2);///y^2
if(sqrt(x+y)>value)
{
star=true;
cout.width(3);
cout<<"x1="<<array_x1<<" y1="<<array_y1<<" x2="<<array_x2[j]<<" y2="<<array_y2[j]<<endl;
}
}
}
if(star!=true)cout<<"SORRY Таких отрезков не найденно ;)";
return 0;
}
 

maffl

Member
23.12.2013
15
10
#2
Логика поиска неправильная. Не вдаваясь в детали,

for(int i=0;i<size, !star;++i)
{
x1 = array_x1
y1 = array_y1
s = 0
for(int j=i+1;j<size;++j)
{
int x=pow(abs(x1-array_x2[j]),2);///x^2
int y=pow(abs(y1-array_y2[j]),2);///y^2
s += sqrt(x+y)
}
if (s > value) star = true
}
if (star) //нашли, печатаем

И почему все переменные целые?
 

Чарли

New Member
25.12.2013
2
0
#3
думаю переменные могут быть какими угодно, проблема в том что мне нужно ее сделать в Борланде, а как переписать ее я не знаю(