Помогите

Тема в разделе "C/C++/C#", создана пользователем Чарли, 25 дек 2013.

  1. Чарли

    Чарли New Member

    Регистрация:
    25 дек 2013
    Сообщения:
    2
    Симпатии:
    0
    дана задача: задано два множества точек на плоскости. В первом множестве найдите хотя бы одну точку, сумма расстояний от которой (от любой из точки первого множества) до точек второго множества превышала бы заданную величину.
    она решена, но в программе в которой надо ее сделать она не работает
    #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;
    }
     
  2. maffl

    maffl Member

    Регистрация:
    23 дек 2013
    Сообщения:
    15
    Симпатии:
    10
    Логика поиска неправильная. Не вдаваясь в детали,

    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) //нашли, печатаем

    И почему все переменные целые?
     
  3. Чарли

    Чарли New Member

    Регистрация:
    25 дек 2013
    Сообщения:
    2
    Симпатии:
    0
    думаю переменные могут быть какими угодно, проблема в том что мне нужно ее сделать в Борланде, а как переписать ее я не знаю(
     
Загрузка...

Поделиться этой страницей