|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
03.11.2008, 16:51 | #1 |
Пользователь
Регистрация: 03.11.2008
Сообщений: 94
|
Обнуление переменной
Люди, помогите с задачей. Суть такова:
даны точки: x1, y1, x2,y2 ....xn,yn . Определить, есть ли среди этих точек 4 таких, которые могут составить квадрат. Я решал её методом векторов, т.е брал 2 вектора, которые могут быть диагоналями и смотрел если они перпендикулярны и точкой пересечения делятся пополам, то это квадрат. Сам код: Код:
|
04.11.2008, 22:28 | #2 |
Пользователь
Регистрация: 03.11.2008
Сообщений: 94
|
Проблема решилась увеличением размерности массивов, но теперь она вообще не работает)
|
05.11.2008, 15:27 | #3 |
Пользователь
Регистрация: 13.10.2008
Сообщений: 17
|
Господи, где это такие профессора.
Извеняюсь, немного подумал, но решил побуручь те остатки мозгов что у меня есть. Я форум уже некоторое время читаю, и некоторые задачи просто поражают своей дикостью(не пытаюсь оскорбить, просто сложность проблем офигенная, откуда тока откапываете). В данном случае, количество вариантов являеться факториальной функцией. Удачи. |
05.11.2008, 18:01 | #4 |
Форумчанин
Регистрация: 10.12.2007
Сообщений: 158
|
Да, случай очень тяжёлый...
Не говоря уже о жутко отформатированном коде и куче глобальных переменных, отследить изменение которых в такой каше очень тяжело... Ну скажите, зачем Вам тогда нуден параметр int в каждой функйии? xD ппц 1) Почему все координаты целые? Даже если у Вас квадраты только с вершинами в узлах целочисленной решётки, при вычислении центра вектора может получиться дробное число, далее следует округление до целого и центры векроров могут начать "совпадать" даже если на самом деле это не так. Решение: используем данные с плавающей точкой, напр. float 2) "Введите кол-во точек". А я введу сто-тыщ-миллионов. Результат - floating point exception в лучшем случае. Где-то после введения 100й координаты )) Решение: юзаем динам. выделение памяти или ставим проверку n < [размер массива] 3) Не будем влезать в алгоритм, но обратите внимание, например, что Ваши функции никак не используют параметры, им передаваемые. Это вообще нехорошо, так как вы явно пытаетесь, чтоб они использовали нужные вам (см. вызов функции) А берут они значения глоб. переменных, которые там явно не те, которые Вы ожидаете. Например. Функция int razm(int) на момент своего завершения делает переменную i равной n - 1. Соотв. далее Ваши функции работают не с теми элементами, тк вы везде используете эту i, но забываете, что изменили её. А самый внешний цикл for (который в main внутри while) заканчивается сразу, тк i+1 уже не меньше n. Переменная i не локальная переменная в функции, а глобальная. И она во фсех функциях одна и та же. Решение: создаём отдельную переменную для циклов "прогона индекса" (если вы хотите продолжать использовать глоб. переменные) или всё же объявляем в каждой функции свою локальную. Лучше вообще индексы внешнего цикла передавать как параметры. 4) Так же функции seredx и seredy на каждом проходе цикла будут возвращать один и тот же результат. Зачем тогда проверка на их равенство? *ехидно улыбается* Вы в этом сомневаетесь? Решение: см. выше. Используем параметры функции. Вобщем, подводя итог, скажу, что вам надо почитать книгу по C++, по возможности хорошую и вдумчиво. А так же, в особенности, раздел "функции" этой книги. Обратите внимание на листинги программ. В частности как передаются параметры, и много ли в этих программах глобальных переменных. Да и на общий стиль и оформление. Пригодится. Если уж будет очень много проблемм с прогой, за пару wmz возьмусь Вам помочь Последний раз редактировалось theos; 05.11.2008 в 18:10. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Обнуление катриджа. | Xeon332 | Компьютерное железо | 2 | 11.05.2009 07:37 |
Изменение переменной | yura-cat | Помощь студентам | 7 | 20.09.2008 17:42 |
Обнуление автоинкрементного поля | azat | БД в Delphi | 4 | 29.11.2007 11:44 |
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) | Arkuz | Общие вопросы Delphi | 12 | 25.09.2007 20:47 |
Обнуление значений $_SESSION[*] при переходе на некоторые страници | kkkggg | PHP | 3 | 11.09.2007 23:09 |