![]() |
Модераторы: bsa Страницы: (8) Все « Первая ... 3 4 [5] 6 7 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]() ![]() ![]() |
|
Чoо |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
Dov,
так надо? ![]() **добавил** Dov, разобрался с исходником. Меня смущало, что в цикле:
вы отнимали 2, а не единицу. Возникли вопросы почему так. В отладчике посмотрел: у меня русские буквы кодируются двумя байтами (вопрос - почему? В принципе догадываюсь: поскольку работаю в юникоде, русские буквы кодируются двумя байтамИ, а английские одним. Верно?),и, в принципе, программа не выходила за пределы строки. Если же англоязычный словарь, то получалось, что mid мог перейти и на предыдущую строку и продолжить перемещаться назад. и программа просто висла. пример словаря:
ищем слово ebel. Если декрементировать mid, то всё ищет и не виснет. и еще сократил:
до
**добавил**
сообразил... это потому что у меня словарь в юникоде ![]() Это сообщение отредактировал(а) Чoо - 18.11.2010, 17:16 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||||||||||
|
|||||||||||||
Чoо |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
мое решение:
правда я не понимаю предупреждение:
почему преобразование устаревшее, и как сделать неустаревшим ![]() Добавлено через 56 секунд это ругается на
и все вызовы метода print -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||||||
|
|||||||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Должно быть:
Это сообщение отредактировал(а) bsa - 22.11.2010, 18:24 |
|||
|
||||
Чoо |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
bsa, оказывается все просто
![]() вот еще одну задачу решил:
можно было бы сделать еще метод принт, что бы не было безобразия с выводом координат прямоугольников ![]() -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||
|
|||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
сейчас пересмотрел задачу про прямоугольники. Все вроде правильно за исключением: нужно проверять исходные данные, что бы узнать возможно ли пересечь эти прямоугольники или нет, чего я не сделал. Поэтому из рекурсии в некоторых случаях можем и не выйти. В принципе переделка минимальная.
следующая задача:
я не понял что требуется: написать класс, рекурсивность которого проявляется только во время считывания элементов списка? при других операциях работы со списком (добавление элемента и удаление элемента) я рекурсии не наблюдаю. при удалении рекурсию можно сделать только что бы установить указатель на удаляемый элемент. а при добавлении - если список делаем упорядоченным. Однако в задании сказано про рекурсивный список а не упорядоченный. Это сообщение отредактировал(а) Чoо - 23.11.2010, 15:32 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
вобщем сделал класс только с рекурсивным выводом списка. непонятно что требовалось в задании.
Это сообщение отредактировал(а) Чoо - 24.11.2010, 10:40 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
Чoо |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
прокомментируйте, если не трудно ![]() -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||
|
|||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
1. используется protected, т.е. pos_x и pos_y доступны в производных классах. вроде бы класс предназначен для наследования. об этом говорит и наличие виртуальных функций. но в классах, которые могут быть базовыми, делают виртуальные деструкторы. для избежания проблем в будущем)) 2. что означает resize в применении к point?? 3. чего виртуального в функции set_pos? если у любой фигуры есть точка отсчета (origin), то его изменение не зависит от фигуры.
открытое наследование означает "является", "работает как". например, "ту134 является самолетом; самолет является летательным аппаратом". в данном случае прямоугольник не является точкой. в качестве базового класса надо выбрать что-то абстрактное - геом. фигуру.
Это сообщение отредактировал(а) baldina - 26.11.2010, 10:25 |
||||
|
|||||
Чoо |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
baldina,
1. - protected объявил для того, что бы можно было получить доступ к полям класса только из методов самого класса, а так же из производных классов. 2. resize в применении к поинт - ни чего не делает, т.к. точка - она точкА, ее невозможно масштабировать. 3. про точку отсчета немного недопонял: в 10 строке вашего класса получение точки отсчета. Метод будет вызываться из производных классов(как и move), однако точка отсчета представлена только координатами одной точки x и y. И теперь мне не понятно, если прямоугольник будет производным классом от shape, то как будет задано его положение на сетке координат, ведь координаты одной точки для него не достаточны. move так же меняет координаты одной точки. Это сообщение отредактировал(а) Чoо - 26.11.2010, 15:58 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
|||
|
||||
baldina |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
говорю же. если класс должен быть базовым - деструктор объявляется виртуальным точка отсчета - одна, она не зависит от фигуры. это ноль в локальной системе координат фигуры
достаточно. вот что бы отобразить, помимо origin надо знать еще width и height, а что бы переместить и origin вполне хватит
Добавлено @ 16:21
Добавлено через 10 минут и 8 секунд кстати. функция resize, где factor - целое число, принимающее отрицательные значения (при уменьшении), выглядит несколько странно. проще factor иметь действительным (double) и использовать только операцию умножения. уменьшение будет при значениях от 0 до 1. а вообще - почитайте про аффинные преобразования, это простой и универсальный инструмент для перемещения, масштабирования, поворота и их комбинаций. все программы 2D и 3D графики используют их. Это сообщение отредактировал(а) baldina - 26.11.2010, 16:22 |
||||||||
|
|||||||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
конечно. вы вводите в интерфейс класса бесполезную функцию. вот если бы эта функция была в интерфейсе класса shape - другое дело. (опять кстати - при использовании аффинных преобразований потребуется переопределить в производных классах только функции отображения и др. специфичные для конкретных фигур. а геометрические преобразования выполняются универсально) |
|||
|
||||
Чoо |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
да, понял. Спасибо. Затупил что-то ![]() вот что получилось:
Всё правильно понял? однако не получилось избваиться от метода resize для точки. Добавлено @ 17:46 и непонятно почему в объявлении метода draw константа. он же ни чего не принимает и ни чего не возвращает.. (а это нужно для того, что бы случайно не изменить содержимое полей объекта, что-то медленно все вспоминаю) Это сообщение отредактировал(а) Чoо - 26.11.2010, 18:13 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||
|
|||||
baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
Чoо,
1. добавьте в point конструктор и операторы +,+=,*,*= это позволит сделать код короче и яснее 2. можно resize не делать виртуальным. достаточно хранить коэф. масштабирования, а при рисовании (и прочих операциях) умножать на него координаты точек.
Это сообщение отредактировал(а) baldina - 29.11.2010, 09:44 |
|||
|
||||
Чoо |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
baldina, спасибо, что помогаете
![]() переделал решение, вот результат:
Надеюсь, что в этот раз всё правильно ![]() на выходных решил еще одну задачу:
решал под линукс. Еще хотел отсортировать файлы по-имени, но это в задачу не входит. Хотя можно было бы ввести метод сортировки ![]() если для тренировки, такая система классов подойдет. Если писать реальную систему, то я бы писал не пару дней, что слишком лениво делать на этапе обучения. Это сообщение отредактировал(а) Чoо - 30.11.2010, 20:41 -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||||
|
|||||||
Чoо |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 22.9.2009 Репутация: 4 Всего: 4 |
По последним задачам, там все правильно?
Следующая задача.
вот тут не знаю. по идее я делаю копию, вроде результат есть ![]() ![]() -------------------- ![]() OS: Debian Squeeze (kernel 3.8.2) IDE: qtCreator 1.3.1; Eclipse SDK 3.5.2 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |