Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zabludshiy
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 34
#1

Задача нахождения длины ломаной - C++

07.05.2013, 00:41. Просмотров 676. Ответов 2
Метки нет (Все метки)

Условие:
Ввод из: Стандартный ввод Время выполнения на одном тесте: 1 с
Вывод в: Стандартный вывод Ограничение памяти программы на одном тесте: 1000 кб

Курьер должен посетить n городов, и он не знает, сколько времени ему на это понадобится. Курьер понимает, что для этого нужно найти расстояния между городами, но он затрудняется сделать это. Помогите нерадивому курьеру справиться с задачей. Задан маршрут движения. Координаты городов представляют пару вещественных чисел x, y. Количество городов не превышает 100 и обязательно больше 1.

Необходимо вывести длины пути между городами с точностью до 0.001 в порядке обхода их курьером.

Входные данные: В первой строке количество городов n, где город 1 - начало пути, а город n - конец пути. В следующих n строках указаны координаты x,y городов через пробел.

Выходные данные: Длины отрезков маршрута от города до города с каждой новой строки.

Пример входных данных
3
0.00 1.00
0.00 0.00
2.00 0.00

Пример выходных данных
1.000
2.000

Сделал, проверяю на произвольных тестовых данных, все работает, загружаю на http://contester.tsure.ru, не проходит проверку. Подскажите, пожалуйста, где я ошибся?

То, что у меня получилось на вижуале 2005, проект вин32 пустой консольный:

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
#include <iostream>
#include <string>
#include <cmath>
#include<iomanip>
using namespace std;
int main(){ 
    int n=0;
    cin>>n;
    if((n<1)||(n>=100)) return 0;
    double * mas=new double[n-1];
    double x1,x2,y1,y2,d;
    cin>>x1>>y1;
    for(int i=0;i<n-1;i++){
        cin>>x2>>y2;
        d=sqrt(pow(x2-x1,2)+pow(y2-y1,2));
        x1=x2; y1=y2;
        double res=int(d*1000+0.5)/1000.0;
        mas[i]=res;
        d=0;res=0;
    }
    for (int i=0;i<n-1;i++){
        cout<<fixed<<std::setprecision(3)<<mas[i]<<endl;
    }
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2013, 00:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задача нахождения длины ломаной (C++):

Функция нахождения длины отрезка - C++
При любом вводимом значение выводит одно и то же, где я промахнулся? #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; ...

функция для нахождения длины связного списка - C++
Помогите написать функцию для нахождения длины связного списка. реализуйте функцию итеративно и рекурсивно. getLength (NULL) должен...

Составить программу нахождения длины медианы треугольника по трем его сторонам - C++
Составить программу нахождения длины медианы треугольника по трем его сторонам.

Задача нахождения кратчайшего пути - C++
Никак не могу понять почему в таких типах задач у меня ошибка. Помогите найти ошибку, и если сможете объясните её. Условие ...

Класс vector (поля: координаты, 2 конструктора, метод нахождения длины вектора и метод вывода координат на экран) - C++
Здравствуйте , помогите пожалуйста с заданием. Организовать класс Вектор на плоскости – поля: координаты, 2 конструктора, метод...

Геометрическая задача нахождения координат точки - C++
Дан прямоугольный треугольник заданный координатами своих вершин в структуре Point:struct Point { double x, y, z; }; Дана точка,...

2
nonedark2008
933 / 672 / 148
Регистрация: 28.07.2012
Сообщений: 1,837
07.05.2013, 00:52 #2
zabludshiy, cout и cin работают долго, лушче printf scanf. Динамическое выделение памяти - тоже долго. Лучше завести статический массив с избыточностью. Проверка числа n тоже бессмысленна, т.к. по условию n не выйдет за границы.
Цитата Сообщение от zabludshiy Посмотреть сообщение
double res=int(d*1000+0.5)/1000.0;
А это вообще ненужный бред.

Добавлено через 53 секунды
Ах да, массив совсем не нужен - достаточно сразу вывести результат.
1
zabludshiy
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 34
08.05.2013, 00:47  [ТС] #3
Как же без массива, ведь выводить результат нужно не сразу, а после ввода всех входных данных :
"
Входные данные: В первой строке количество городов n, где город 1 - начало пути, а город n - конец пути. В следующих n строках указаны координаты x,y городов через пробел.

Выходные данные: Длины отрезков маршрута от города до города с каждой новой строки.
"

Добавлено через 12 часов 35 минут
Спасибо nonedark2008.
Вопрос закрыт, убрал переменную res и поставил запись переменной d в массив и после этого все получилось
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.05.2013, 00:47
Привет! Вот еще темы с ответами:

Задача на нахождения вектора градиента, не подскажите логику решения? - C++
Вот задача, не пойму, что надо сделать, смысл задачи не ясен. Ну мне естественно надо программу написать, но хоть смысл подскажите) ...

Алгоритм нахождения главного элемента из списка (задача Иосифа Флавия) - C++
Выписал алгоритм,называется ф-ция Иосифа. Смысл такой,что N=9 M=5 . Допустим есть 9 человек в кругу, и после каждого 5 удаления смыкают...

Длина Ломаной - C++
Помогите пожалуйста написать программку, вот задание : ломаная задана координатами своих вершин.Найти ее длину.Использовать функцию для...

Класс ломаной линии - C++
Разработать класс ломанной линии CZigzagLine.В классе CZigzagLine линия должнабыть описана совокупностью координат точек на...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.