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

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

Восстановить пароль Регистрация
 
zabludshiy
1 / 1 / 0
Регистрация: 21.11.2011
Сообщений: 34
07.05.2013, 00:41     Задача нахождения длины ломаной #1
Условие:
Ввод из: Стандартный ввод Время выполнения на одном тесте: 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2013, 00:41     Задача нахождения длины ломаной
Посмотрите здесь:

Класс ломаной линии C++
C++ задача на нахождения максимального и минимального из двух натуральных чисел не используя ветвление.
C++ Длина Ломаной
функция для нахождения длины связного списка C++
C++ расстояние от окружности к ломаной?
Определить длину ломаной по координатам C++
Задача на нахождения вектора градиента, не подскажите логику решения? C++
C++ Задача нахождения кратчайшего пути

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

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

Добавлено через 53 секунды
Ах да, массив совсем не нужен - достаточно сразу вывести результат.
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 в массив и после этого все получилось
Yandex
Объявления
08.05.2013, 00:47     Задача нахождения длины ломаной
Ответ Создать тему
Опции темы

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