43 / 0 / 0
Регистрация: 07.09.2019
Сообщений: 114
1

Напишите пожалуйста программу в С++

26.09.2019, 05:23. Показов 1810. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Случайным образом формируются координаты X и Y 100 точек. Диапазон значений координат от -150 до 150. Для каждой четверти напечатать точки , принадлежащие ей , и 2 точки , расстояние между которыми минимально.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2019, 05:23
Ответы с готовыми решениями:

Напишите пожалуйста написать программу и объясните как
Добро времени суток уважаемые программисты.Суть такова.Нужно,чтобы я вводил координаты,а программа...

Напишите пожалуйста программу
Программа по нахождению года полностью идентичного заданному, допустим 2014 (по дням недели...

Напишите пожалуйста программу на C#
Телефонный справочник, надо сделать через класс.

Напишите пожалуйста программу №10(а,в), 14(a), 17

5
Модератор
2547 / 1646 / 895
Регистрация: 16.10.2013
Сообщений: 4,871
Записей в блоге: 13
26.09.2019, 06:29 2
Программа для генерации точек и раскидывания их по векторам в зависимости от принадлежности к определенной четверти. Точки находящиеся на стыке четвертей игнорируются.

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
#include <iostream>
#include <vector>
 
using namespace std;
 
struct point{
    int x;
    int y;
};
 
int main()
{
    // диапазон значений координат
    int low_diap = -150;
    int up_diap = 150;
    
    int size = 100;             // кол-во точек
    vector<struct point> points;// вектор с точками
    
    vector<struct point> q1;    // вектор с точками 1 четверти
    vector<struct point> q2;    // вектор с точками 2 четверти
    vector<struct point> q3;    // вектор с точками 3 четверти
    vector<struct point> q4;    // вектор с точками 4 четверти
    
    struct point p;             // структура для генерации в цикле
    
    srand(time(NULL));
    for(int i = 0; i < size; i++){
        p.x = low_diap + rand() % (up_diap - low_diap + 1);
        p.y = low_diap + rand() % (up_diap - low_diap + 1);
        points.push_back(p);
    }
    
    // распределение точек по четвертям
    for(struct point point_i: points){
        if((point_i.x > 0) && (point_i.y > 0)){
            q1.push_back(point_i);
        } else{
            if((point_i.x < 0) && (point_i.y > 0)){
                q2.push_back(point_i);
            } else{
                if((point_i.x < 0) && (point_i.y < 0)){
                    q3.push_back(point_i);
                } else{
                    if((point_i.x > 0) && (point_i.y < 0)){
                        q4.push_back(point_i);
                    }
                }
            }
        }
    }
    
    cout << "1 четверть:" << endl;
    for(struct point point_i: q1){
        cout << point_i.x << " " << point_i.y << endl;
    }
    cout << endl << "2 четверть:" << endl;
    for(struct point point_i: q2){
        cout << point_i.x << " " << point_i.y << endl;
    }
    cout << endl << "3 четверть:" << endl;
    for(struct point point_i: q3){
        cout << point_i.x << " " << point_i.y << endl;
    }
    cout << endl << "4 четверть:" << endl;
    for(struct point point_i: q4){
        cout << point_i.x << " " << point_i.y << endl;
    }
 
    return 0;
}
По поводу вывода двух точек расстояние между которыми минимально, хотелось бы послушать ваши предложения и мысли. Как бы вы стали это решать?
2
Just Do It!
3559 / 1956 / 626
Регистрация: 23.09.2014
Сообщений: 6,310
Записей в блоге: 2
26.09.2019, 10:34 3
Лучший ответ Сообщение было отмечено zaboshtay как решение

Решение

Цитата Сообщение от long399 Посмотреть сообщение
Как бы вы стали это решать?
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
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
#include <cmath>
 
using namespace std;
#define DEBUG std::cout
 
struct point
{   int x;
    int y;
};
 
///----------------------------------------------------------------------------|
/// C++03
///----------------------------------------------------------------------------:
int get_distance_quad_sum(point const& p1, point const& p2)
{   return ((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y));
}
 
void serch_index_for_distance_min(vector<struct point>& p)
{   int p_index_1,
        p_index_2;
    int distance_quad_sum_min = INT_MAX;
    
    for    (int i = 0;   i < p.size() - 1; ++i)
    {   for(int j = i+1; j < p.size();     ++j)
        {   int d = get_distance_quad_sum(p[i], p[j]);
        
DEBUG << sqrt(d) << "  \n";
            
            if( distance_quad_sum_min > d)
            {   p_index_1 = i;
                p_index_2 = j;
                distance_quad_sum_min = d;
            }
        }
    }
    std::cout << "\nТочка_1   : " << p[p_index_1].x << ", \t" << p[p_index_1].y
              << "\nТочка_2   : " << p[p_index_2].x << ", \t" << p[p_index_2].y
              << "\nРасстояние: " << sqrt(distance_quad_sum_min) << "\n";
}
 
///----------------------------------------------------------------------------|
/// C++11
///----------------------------------------------------------------------------:
int main()
{   setlocale(0, "");
    // диапазон значений координат
    int low_diap = -50;
    int up_diap = 50;
 
    int size = 100;             // кол-во точек
    vector<struct point> points;// вектор с точками
 
    vector<struct point> q1;    // вектор с точками 1 четверти
    vector<struct point> q2;    // вектор с точками 2 четверти
    vector<struct point> q3;    // вектор с точками 3 четверти
    vector<struct point> q4;    // вектор с точками 4 четверти
 
    struct point p;             // структура для генерации в цикле
 
    srand(time(NULL));
    for(int i = 0; i < size; i++)
    {   p.x = low_diap + rand() % (up_diap - low_diap + 1);
        p.y = low_diap + rand() % (up_diap - low_diap + 1);
        points.push_back(p);
    }
 
    // распределение точек по четвертям
    for(struct point point_i: points)
    {   if((point_i.x > 0) && (point_i.y > 0))
        {   q1.push_back(point_i);
        }
        else
        {   if((point_i.x < 0) && (point_i.y > 0))
            {   q2.push_back(point_i);
            }
            else
            {   if((point_i.x < 0) && (point_i.y < 0))
                {   q3.push_back(point_i);
                }
                else
                {   if((point_i.x > 0) && (point_i.y < 0))
                    {   q4.push_back(point_i);
                    }
                }
            }
        }
    }
 
    cout << "1 четверть:" << endl;
    for(struct point point_i: q1)
    {   //cout << point_i.x << " " << point_i.y << endl;
    }
    cout << endl << "2 четверть:" << endl;
    for(struct point point_i: q2)
    {   //cout << point_i.x << " " << point_i.y << endl;
    }
    cout << endl << "3 четверть:" << endl;
    for(struct point point_i: q3)
    {   //cout << point_i.x << " " << point_i.y << endl;
    }
    cout << endl << "4 четверть:" << endl;
    for(struct point point_i: q4)
    {   //cout << point_i.x << " " << point_i.y << endl;
    }
 
    ///-------------------------------------------|
    /// Ищем две точки с минимальным расстоянием. |
    ///-------------------------------------------:
    serch_index_for_distance_min(points);
 
    return 0;
}
Добавлено через 25 минут
long399,
перепешите, пжлста, циклы:
C++
27
28
    for    (int i = 0;   i < p.size() - 1; ++i)
    {   for(int j = i+1; j < p.size();     ++j)
на C++11,
хотца глянуть весь сей код без индексов.
2
Модератор
2547 / 1646 / 895
Регистрация: 16.10.2013
Сообщений: 4,871
Записей в блоге: 13
26.09.2019, 11:28 4
Если через итераторы сделать то что-то вроде этого будет:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for(vector<struct point>::iterator i = p.begin(); i != p.end(); i++){
        for(vector<struct point>::iterator j = i + 1; j != p.end(); j++){
            int d = get_distance_quad_sum(*i, *j);
            
DEBUG << sqrt(d) << "  \n";
            
            if( distance_quad_sum_min > d)
            {   p_index_1 = distance(p.begin(), i);
                p_index_2 = distance(p.begin(), j);
                distance_quad_sum_min = d;
            }
        }
    }
Должно быть можно как-то проще это сделать, но я не очень дружу с векторами и итераторами. Взглянул бы как это реализовать через циклы, как в main сделаны.. Если сие возможно.
1
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 3
05.05.2020, 21:14 5
XLAT, Здравствуйте, не могли бы вы мне помочь
0
Just Do It!
3559 / 1956 / 626
Регистрация: 23.09.2014
Сообщений: 6,310
Записей в блоге: 2
05.05.2020, 21:16 6
Artur-38region,
не надо скромничать:
просите помощи сразу у всех.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.05.2020, 21:16
Помогаю со студенческими работами здесь

Напишите программу пожалуйста
В первый час туристы прошли 5 км. Каждый следующий час их скорость снижалась на 10 %. Через сколько...

Напишите программу , пожалуйста
Написать программу. Сума елементов рядка должна быть равна суме елементов 2-х предыдущих рядков. ...

Напишите пожалуйста программу.
Программа должна с помощью битовых операций выводить введённое число умноженное на четыре. Пример:...

Напишите пожалуйста программу.
Напишите программу,которая будет вводить двузначное шестнадцатиричное число и выводить его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru