Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 11.06.2015
Сообщений: 2

Реализовать процесс исчезновения точек и найти последнюю точку в dev c++

11.06.2015, 23:04. Показов 1283. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На плоскости заданы n материальных точек. С некоторого момента точка с наименьшей массой исчезает и передает при этом свою массу до ближайшей к ней точки. Так продолжается до тех пор, пока не останется только одна точка. Реализовать этот процесс и найти последнюю точку.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2015, 23:04
Ответы с готовыми решениями:

На оси абцисс найти такую точку, сумма расстояний, которой до точек А и В-наименьшая для всех точек
Даны действительные числа х1,у1,х2,у2(х1 не равен х2),которые определяют 2 точки А(х1,у1) и В(х2,у2).На оси абцисс найти такую точку,сумма...

Дано множество A из N точек на плоскости. Найти точку (вывести её номер и значение) среди всех точек этого множества
Дано множество A из N точек на плоскости. Найти точку (вывести её номер и значение) среди всех точек этого множества, лежащих в первой...

Найти последнюю точку в строке
Вообщем нужно ввести строку (имя файла), если нет формата, то дописать '.exe', если есть, то заменить на 'exe'. Так вот, мне для этого...

1
196 / 197 / 120
Регистрация: 27.05.2011
Сообщений: 545
12.06.2015, 04:26
Лучший ответ Сообщение было отмечено massi как решение

Решение

Вот, сделал от нечего делать…
Ввод: информация о каждой точке вводится построчно в формате: абсцисса ордината масса название.
Выводится имя точки-победителя.
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <iterator>
#include "world.hpp"
 
World::Point task_algorithm(World::Area& area) {
    World::Point current = area.find_min(), next;
    while (area.quantity()) {
        next = area.find_near(current);
        next.weight += current.weight;
        current = next;
    }
    return current;
}
 
int main()
try {
    World::Area area(std::istream_iterator<World::Point>(std::cin),
            std::istream_iterator<World::Point>());
    std::cout << task_algorithm(area).name << std::endl;
} catch (World::InvalidUsing&) {
    std::cerr << "Invalid input" << std::endl;
}

world.hpp
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
#ifndef WORLD_H_
#define WORLD_H_
 
#include <stdexcept>
#include <string>
#include <vector>
 
namespace World {
 
struct Point {
    double x;
    double y;
    double weight;
    std::string name;
};
 
class Area {
    std::vector<Point> array;
    template <typename F>
    World::Point helper(F);
public:
    template <typename IterT>
    Area(IterT first, IterT last) :
        array(first, last) { }
    Point find_near(const Point&);
    Point find_min();
    std::vector<Point>::size_type quantity() noexcept {
        return array.size();
    }
};
 
struct InvalidUsing :
    std::logic_error {
    InvalidUsing(const std::string& s) :
        std::logic_error(s) { }
};
 
std::istream& operator>> (std::istream& in, Point& p);
 
}   // namespace World
 
#endif  // WORLD_H_

world.cpp
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
#include <algorithm>
#include <cmath>
#include <sstream>
#include <string>
 
#include "world.hpp"
 
template <typename F>
World::Point World::Area::helper(F comp) {
    if (!array.size()) {
        throw World::InvalidUsing("area_helper");
    }
    auto it = std::min_element(array.begin(), array.end(), comp);
    auto result = *it;
    array.erase(it);
    return result;
}
 
World::Point World::Area::find_near(const World::Point& p) {
    return helper([&p](const Point& a, const Point& b) {
                return std::hypot(a.x - p.x, a.y - p.y) < std::hypot(b.x - p.x, b.y - p.y);
            });
}
 
World::Point World::Area::find_min() {
    return helper([](const Point& a, const Point& b) { return a.weight < b.weight; });
}
 
std::istream& World::operator>> (std::istream& in, World::Point& p) {
    std::string str;
    std::getline(in, str);
    std::istringstream s(std::move(str));
    s.copyfmt(in);
    char ch;
    s >> p.x >> p.y >> p.weight >> ch;
    s.putback(ch);
    std::getline(s, p.name);
    in.copyfmt(s);
    return in;
}


Добавлено через 10 минут
Чтобы закончить ввод, нужно нажать Ctrl-D или Ctrl-Z
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2015, 04:26
Помогаю со студенческими работами здесь

На оси абсцисс найти такую точку, сумма расстояний от которой до точек А и В наименьшая для всех точек этой оси
Даны действительные числа х1,у1,х2,у2,(х1 не равен х2), которые определяют две точки А(х1,у1), В(х2,у2). На оси абсцисс найти такую точку,...

На оси абсцисс найти такую точку, сумма расстояний от которой до точек А и В наименьшая для всех точек этой оси
Даны действительные числа х1,у1,х2,у2,(х1х2), которые определяют две точки А(х1,у1), В(х2,у2). На оси абсцисс найти такую точку, сумма...

Найти точку пересечения 4 точек
Задача: Четыре точки множества заданы попарно. Найти точку их пересечения. Помогите написать программу на C или формулу, которую можно...

Заданы координаты 10 точек.Найти точку самую дальнюю от начала координат и найти расстояние.
Заданы координаты 10 точек.Найти точку самую дальнюю от начала координат и найти расстояние.

Найти точку равноудаленную от трех точек
Добрый день, подскажите пожалуйста с задачей. Найти точку S(xs,ys), равноудаленную от трех данных точек: A(xa,ya), B(xb,yb), C(xc,yc)....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru