С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
43 / 0 / 0
Регистрация: 07.09.2019
Сообщений: 114

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

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

Студворк — интернет-сервис помощи студентам
Случайным образом формируются координаты X и Y 100 точек. Диапазон значений координат от -150 до 150. Для каждой четверти напечатать точки , принадлежащие ей , и 2 точки , расстояние между которыми минимально.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.09.2019, 05:23
Ответы с готовыми решениями:

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

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

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

5
Модератор
 Аватар для long399
2882 / 1836 / 933
Регистрация: 16.10.2013
Сообщений: 5,240
Записей в блоге: 15
26.09.2019, 06:29
Программа для генерации точек и раскидывания их по векторам в зависимости от принадлежности к определенной четверти. Точки находящиеся на стыке четвертей игнорируются.

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!
 Аватар для XLAT
4201 / 2657 / 654
Регистрация: 23.09.2014
Сообщений: 8,952
Записей в блоге: 3
26.09.2019, 10:34
Лучший ответ Сообщение было отмечено 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
Модератор
 Аватар для long399
2882 / 1836 / 933
Регистрация: 16.10.2013
Сообщений: 5,240
Записей в блоге: 15
26.09.2019, 11:28
Если через итераторы сделать то что-то вроде этого будет:

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
XLAT, Здравствуйте, не могли бы вы мне помочь
0
Just Do It!
 Аватар для XLAT
4201 / 2657 / 654
Регистрация: 23.09.2014
Сообщений: 8,952
Записей в блоге: 3
05.05.2020, 21:16
Artur-38region,
не надо скромничать:
просите помощи сразу у всех.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2020, 21:16
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru