6 / 6 / 2
Регистрация: 31.03.2013
Сообщений: 120
|
|
1 | |
Поиск длины отрезка и количество таких отрезков28.11.2014, 12:47. Показов 4347. Ответов 5
Метки нет (Все метки)
Добрый день! Затупил совсем с задачей.
Вот условие: Кликните здесь для просмотра всего текста
Файл in.txt cодержит корректные вещественные координаты отрезков на плоскости (по одному отрезку в строке) в формате:
(x1;y1) (x2;y2) 1 Создать список вида (len; num) где len – длина отрезка, округлённая до целого значения, а num – количество отрезков длины len. 2) Отсортировать список по убыванию num. Пример файла in.txt: (0 ; 0) ( 2,5; 0) ( 0;1) ( 0; 2 ) (-3,0; 20,1e-1) (-2;2) Вывод: 1;2 3;1 Замечания к задаче 2 – Информационный класс, как обычно, описать в отдельном файле. Считывание файла данных и необходимые действия реализовать в методе Main() приложения. – Строку разобрать методом split( ) через регулярное выражение. Формат строки (неформально): \s*(\s*вещ.число\s*;\s*вещ.число\s*)\s*(\s*вещ.число\s*;\s*вещ.число\s*)\s* Вещественное число во входной строке правильное. Пары скобок и точка с запятой между числами гарантированно имеются. – Для поиска элемента в коллекции использовать метод BinarySearch( ) коллекции. – Для корректной работы BinarySearch() нужно, чтобы список всегда был отсортирован. Возвращаемое значение в случае неудачного поиска может быть использовано для получения индекса, куда нужно вставить новый элемент с сохранением упорядоченности массива. – BynarySearch() использует IComparable< >, а Sort() – IComparer<Segment>. Это позволяет в одном классе иметь два метода сравнения: один по длине отрезка (нужен для поиска BynarySearch()), а второй – по количеству (для сортировки перед выводом). – Длина отрезка = sqrt((x1– x2)2 + (y1–y2)2) – чтобы половинные значения округлялись к большему, нужно вызывать Math.Round(…,MidpointRounding.AwayFromZero); Я не могу саму идею понять. Получается я создаю List и перед вводом нового значения бинарным поиском сравниваю его с имеющимися, если такого нету то он сам его вставляет в нужное место? А как тогда происходит изменение параметра num, если такое значение уже есть? И что такое IComparer<Segment>, а вернее Segment? Это от балды название или стандартное. В MSDN ничего такого не нашёл.
0
|
28.11.2014, 12:47 | |
Ответы с готовыми решениями:
5
Вывести значение длины отрезков и набор из точек, образующих разбиение отрезка длины отрезков Вывести лестницу из отрезков определённой длины Даны длины отрезков a, b, c, d, e. Выяснить, можно ли построить треугольники |
813 / 421 / 169
Регистрация: 08.02.2013
Сообщений: 711
|
||||||||||||||||
28.11.2014, 14:43 | 2 | |||||||||||||||
Сообщение было отмечено Agrik как решение
Решение
Agrik, похоже, что Segment это класс отрезков унифицированных своей длиной. BinarySearch сам не вставляет, вернет или положительный индекс найденного элемента, или отрицательный в противном случае, Вы сами должны написать код обработки на его основе. Примерный код класса Segment
вот так использовать
1
|
6 / 6 / 2
Регистрация: 31.03.2013
Сообщений: 120
|
|||||||||||
28.11.2014, 15:22 [ТС] | 3 | ||||||||||
rRczZZ, вот мой класс Segment
Кликните здесь для просмотра всего текста
а вот Мэйн, только недоделанный Кликните здесь для просмотра всего текста
т.е. у меня уже реализовано чтение с файла и прочая фигня вплоть до нахождения длины... или я не разобрался в коде или Вы сразу вносите длину отрезка и количество таких отрезков, а надо только длину вносить, а количество уже высчитывается само, в зависимости от того был ли раньше отрезок с такой длиной или нет.. вот с этим напряг(
0
|
813 / 421 / 169
Регистрация: 08.02.2013
Сообщений: 711
|
|
28.11.2014, 15:27 | 4 |
Agrik, да в этом и разница. У вас Segment есть "конкретный отрезок", а у меня это "класс отрезков некой длины", судя по заданию Segment должен быть именно таким.
0
|
6 / 6 / 2
Регистрация: 31.03.2013
Сообщений: 120
|
|
28.11.2014, 20:43 [ТС] | 5 |
rRczZZ, у меня ж это класс... в который я с текстового файла по одной вкидываю строки с координатами, а внутри он разбивает строки по координатам и находит длину... т.е. с него я получаю длину... осталось мне допедрить, как эту длину помещать в List и там уже сортировать и находить отрезки одинаковой длины, увеличивая им счётчик... при этом не должна сбиваться сортировка... думал ещё вместо листа hashtable заюзать, но с этим геморойнее..
Добавлено через 4 часа 25 минут rRczZZ, сделал я в итоге.. основную идею у Вас взял... хотя я так себе это и представлял только затупил с реализаций.. ещё раз спасибо
0
|
0 / 0 / 1
Регистрация: 29.10.2016
Сообщений: 19
|
|
02.12.2016, 13:21 | 6 |
Agrik, был бы рад помощи как решил, не считает счетчик, не могу добиться правды.
0
|
02.12.2016, 13:21 | |
02.12.2016, 13:21 | |
Помогаю со студенческими работами здесь
6
Ввести количество отрезков и их длины; найти, сколько треугольников можно составить из этих отрезков Два отрезка заданы координатами их концов. Вычислить и сравнить эти длины отрезков На отрезке длины A размещены максимально возможное количество отрезков длины B Есть ли у кого похожий алгоритм: распределения отрезков разной длины внутри отрезков фиксированной длины? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |