Форум программистов, компьютерный форум CyberForum.ru

ниточка - C++

Восстановить пароль Регистрация
 
zantaz
1 / 1 / 0
Регистрация: 25.09.2013
Сообщений: 15
25.09.2013, 16:33     ниточка #1
условие задачи:
В первой строке входа к этой задаче находятся два числа — количество гвоздей N, 1 ≤ N ≤ 100, и вещественное число R — радиус шляпок гвоздей. Все шляпки имеют одинаковый радиус. Далее на входе располагаются еще N строк, в каждой из которых записана через пробел пара вещественных координат центра очередного гвоздя; координаты не превосходят по абсолютной величине числа 100. Описания гвоздей приводятся в порядке обхода вершин многоугольника (либо по часовой стрелке, либо против часовой стрелки), начиная с произвольного. Шляпки разных гвоздей не накладываются друг на друга.
Результат
Выведите вещественное число, округлённое до двух знаков после запятой — длину ниточки, натянутой вокруг всех гвоздей.
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
#include "stdafx.h"
#include "iostream"
#include <iomanip> 
using namespace std;
int const K=1000; 
int main()
{
    int N;
    double R,S=0;
    double x[K];
    double y[K];
    cin>>N>>R;
    for(int i=1;i<=N;i++)
    {
        cin>>x[i]>>y[i];
    }
    for(int i=1;i<=N-1;i++)
    {
        S=S+sqrt(pow((x[i]-x[i+1]),2.0)+(pow((y[i]-y[i+1]),2.0)));
    }
    S=S+sqrt(pow((x[N]-x[1]),2.0)+(pow((y[N]-y[1]),2.0)));
    S=S+(3.14*R*2);
    cout<<fixed<<setprecision(2)<<S;
    return 0;[CPP]
}[/CPP]
где ошибка может скрываться?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2013, 16:33     ниточка
Посмотрите здесь:

Turbo Pascal Ниточка

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
25.09.2013, 16:49     ниточка #2
а как нитку натягивают на шляпки или куда?
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
25.09.2013, 16:51     ниточка #3
Ну я бы включил файл
C++
1
#include <math.h>
для использования функции pow.
а в остальном вроде бы все норма.
ну и конечно вместо
Цитата Сообщение от zantaz Посмотреть сообщение
#include "iostream"
надо бы
C++
1
#include <iostream>
Добавлено через 2 минуты
хотя постановка задачи веселая.

гвозди видимо забиты по самую шляпку и нитка идет по шляпкам.
нитка перед переходом к следующему гвоздю видимо делает полный оборот вокруг текущего (что и подразумевалось видимо под условием вокруг всех гвоздей)

Однако если нитка только зацеплялась за гвозди, ууу тогда я сочувствую. Ведь тогда надо будет определять сектор вокруг которого будет идти нитка чтобы перейти к
следующему гвоздю
fishec
 Аватар для fishec
118 / 118 / 30
Регистрация: 07.09.2013
Сообщений: 337
25.09.2013, 17:16     ниточка #4
Цитата Сообщение от HedgehogLu Посмотреть сообщение
Ведь тогда надо будет определять сектор вокруг которого будет идти нитка чтобы перейти к
следующему гвоздю
Не нужно. В сумме все дуги дадут полную окружность.
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
25.09.2013, 17:30     ниточка #5
это только при условии что многоугольник выпуклый
zantaz
1 / 1 / 0
Регистрация: 25.09.2013
Сообщений: 15
25.09.2013, 19:10  [ТС]     ниточка #6
нитка идет по шляпкам.странно почему у меня visual studio 2012 без <math.h> и с неправильной записью <iostream> работал

Добавлено через 6 минут
Цитата Сообщение от HedgehogLu Посмотреть сообщение
это только при условии что многоугольник выпуклый
а если многоугольник невыпуклый тогда надо исправлять решение?
HedgehogLu
 Аватар для HedgehogLu
146 / 67 / 1
Регистрация: 04.09.2013
Сообщений: 250
26.09.2013, 11:36     ниточка #7
ну по сути тогда возникает некоторая погрешность в вычислениях связанная с огибанием гвоздей, но лучше по этому поводу не заморачиваться, т.к. там действительно "весело" получается, тк надо будет получать касательные с соседними двумя гвоздями, находить сектор по которому нитка огибает гвоздь и вычислять длину дуги сектора. Тут уже проще тогда оговорить условие, что это работает для выпуклых многоугольников.

и еще меня смущает одна фраза в постановке задачи
Цитата Сообщение от zantaz Посмотреть сообщение
Шляпки разных гвоздей не накладываются друг на друга.
Я не могу взять в толк, что получится если расстояние между координатами центров двух гвоздей будет меньше диаметра?
Yandex
Объявления
26.09.2013, 11:36     ниточка
Ответ Создать тему
Опции темы

Текущее время: 02:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru