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

Местонахождение точки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не получается разобраться Visual C++ http://www.cyberforum.ru/cpp-beginners/thread203640.html
Привет всем помогите пожалуйста кто может у меня такая проблема не могу решить задачи по C++ Работа со строками. В строке, содержащей последовательность слов, найти конец предложения, обозначенный символом "точка". Если в следующем слове первый символ – строчная буква, то заменить ее на прописную. У меня почти получилось, но в слове "точка." заменяется на главную только первая буква...
C++ Кто может помочь с Лабой на С++,я не могу написать(( Тема Операторы ВЫбора вариант 4. Для целого числа k от 1 до 99 напечатать фразу «мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» следует заменить на слово «год» или «года». Вывести результат на экран по образцу: введите число 15 *********** мне 15лет http://www.cyberforum.ru/cpp-beginners/thread203636.html
C++ вычислить выражение
Здравствуйте! Если есть у вас свободное время помогите с прогой. Заранее спасибо!
C++ Массив, нахождене разности между двумя числами
Помогите пожалуйста...сама прога вроде работает, но при выводе второго массива не разделяет первую и вторую строку. #include <iostream> #include <stdlib.h> #include <conio.h> using namespace std; int main() { //В массиве данных размерностью 2 в первой строке //найти участок данных, отличающийся между собой на //заданную величину. Приравнять найденное значение //одной величине и...
C++ Вставка элемента в дерево http://www.cyberforum.ru/cpp-beginners/thread203608.html
Доброго времени суток.Такая проблема,есть задача: Написать программу,реализующую вставку в Trie дерево.С помощью этой программы создайте Trie дерево и удалите из него слова заканчивающиеся на согласную букву. Алгоритм решения я впринципе понимаю.А вот с реализацией возникают трудности.. #include <vcl.h> #include <iostream.h> #pragma hdrstop
C++ Ошибка в правильности команды... В понедельник нужно будет показать правильность работы проги... Ошибку пишет тут (декларатион синтаксис еррор ) " bool smezh(edge q1,edge q2){ // 1 - если q1 и q2 смежны, иначе -0 " #include <iostream.h> #include <stdio.h> #include <conio.h> FILE* fi = fopen("m_graph.txt","r"); подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
06.12.2010, 07:22     Местонахождение точки
Цитата Сообщение от Gitarist Посмотреть сообщение
Спасибо Но вот если многоугольник ввогнут?
Если вогнут, то такой алгоритм не пройдет, сейчас подумаю.

Добавлено через 21 час 34 минуты
Если многоугольник не выпуклый, то задача усложняется довольно сильно. Я придумал один вариант, но не факт что он самый простой. Может быть Вам стоит поискать в интернете?
В общих чертах мой алгоритм будет выглядеть так:
- рек. функция (в параметрах передаются индексы двух точек) - возвращает значение типа bool
{
- во первых проверяются все точки (начиная с индекса первой точки переданной в параметрах и заканчивая индексом второй точки переданной в параметрах рек.функции) на принадлежность выпуклой оболочки.
- Затем используя только точки, которые принадлежат выпуклой оболочке делаем вот это:
Проверяем на принадлежность точки треугольникам между точками 1, 2, 3 затем между точками 1, 3, 4, затем между точками 1,4,5.... затем между точками 1, N-1, N.
(здесь имеется ввиду точки 1 и N - индексы которых передавались в параметрах рек. функции)
- Если точка не принадлежит выпуклой оболочке, то сразу возращаем false (точка точно не принадлежит этому многоугольнику (образованному точками начиная с индекса первой точки переданной в параметрах и заканчивая индексом второй точки переданной в параметрах рек.функции))
- Если все проверяемые точки оказались принадлежащими выпуклой оболочке и точка принадлежит выпуклой оболочке, то сразу возвращаем true (точка точно принадлежит этому многоугольнику (образованному точками начиная с индекса первой точки переданной в параметрах и заканчивая индексом второй точки переданной в параметрах рек.функции)).
- Если не все проверяемые точки оказались принадлежащими выпуклой оболочке и точка принадлежит выпуклой оболочке, то делаем перебор индексов точек начиная с индекса первой точки переданной в параметрах и заканчивая индексом второй точки переданной в параметрах рек.функции и вызываем рек функцию для каждого такого участка:
Например имеем 10 точек:
индексы точек принадлежащих выпуклой оболочке: 0, 1, 5, 6, 9
индексы точек не принадлежащих выпуклой оболочке: 2, 3, 4, 7, 8
В данном случае рек функция будет вызвана два раза с такими параметрами: один раз -(1, 5), второй раз -(6, 9). Т.е. если между точками принадлежащими выпуклой оболочке, есть точки не принадлежащие выпуклой оболочке, то в параметрах передаем индексы двух точек принадлежащих выпуклой оболочке.
Если любой из вызывов вернет true, то эта функция возвращает false.
Если все вызовы вернут false, то эта функция возвращает true.
}
 
Текущее время: 21:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru