|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
Простая графическая система27.03.2013, 12:27. Показов 1995. Ответов 16
Метки нет (Все метки)
Здарова!
Решаю задачку: Реализуйте простую графическую систему, используя доступные на вашем компьютере графические средства (если их нет — используйте ASCII представление, где пиксел, это знакоместо): Window(n,m) создает на экране область размером nxm. Координаты декартовы. Окно w типа Window имеет координаты w.current(). Начальные координаты равны Point(0,0). Координаты можно задать с помощью w.current(p), где p имеет тип Point. Тип Point задается парой координат: Point(x,y). Тип Line специфицируется парой точек: Line(w.current(),p2); класс Shape является общим интерфейсом для Dot, Line, Rectangle, Circle и других фигур. Point не является Shape. Dot(p) представляет точку p на экране. Shape на экране не наблюдается до вызова draw(). Например: w.draw(Circle(w.current(),10)). Каждый Shape имеет девять контактных точек: e (east), w (west), n (north), s (south), ne, nw, se, sw и с (center). Например: Line(x.c(), y.nw()) создает линию из центра x в левый верхний угол y. После вызова draw() для Shape его текуцие координаты равны se(). Rectangle верхней левой и правой нижней вершинами: Rectangle(w.current(),Point(10,10)). В качестве простого теста изобразите простой детский рисунок «дом с крышей, два окна и дверь». мб кто чо поможет или решение есть готовое? А то я в ооп стиле никода не писал. Добавлено через 4 минуты Например от "Окно w типа Window имеет координаты w.current()." как это понимать? Оно, что должно напечатать или вернуть массив с размером окна? Головняк. Добавлено через 2 минуты Давайте господа подключайтесь решаем вместе. Задачка эта для начинающих из Страуструпа. Как раз я ее щас решаю подключаемся. Кто со мной тот герой. Давайте кто первый решит , на скорость, тот и молодец
0
|
|
| 27.03.2013, 12:27 | |
|
Ответы с готовыми решениями:
16
Простая графическая библеотека Простая графическая библиотека Простая файловая система |
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 27.03.2013, 12:33 [ТС] | ||
|
Добавлено через 40 секунд не люблю пропускать задачи, совесть потом мучает, лучше кое как сделать спустя рукава сделать чем пропустить. Добавлено через 1 минуту Да и задачка впринципе не сложная по порядку идеш создаешь классы да разбираться лень. Добавлено через 27 секунд лучше если б кто то готовое решение дал, а потом готовое решение разобрать. Добавлено через 24 секунды обучение быстрее пойдет, а то самому разбирать я времени много затрачу. Добавлено через 49 секунд Это ж известная задачка небось. Неужели никто не решал?
0
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||
| 27.03.2013, 12:41 [ТС] | |||
. Яж говорю первую тяжело если не кода не делал, а затем уже легко идет. Как говорится второй раз не первый раз .
0
|
|||
|
|
|
| 27.03.2013, 12:46 | |
|
1
|
|
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||
| 27.03.2013, 12:52 [ТС] | |||
|
Добавлено через 1 минуту Добавлено через 1 минуту Все продолжаю делать возникнуть вопросы сюда кину.
0
|
|||
| 27.03.2013, 12:55 | ||||
|
Не по теме:
1
|
||||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 27.03.2013, 16:30 [ТС] | ||
|
Все не помогаем либо готовое решение, что касается задачи конкретно по описанию в условии, либо не флудим. Добавлено через 3 часа 25 минут Я от все немогу никак придумать как же его реализовать? От допустим я создаю класс Window, это как бы окно класс Shape это производный абстрактный класс от Window, а от Shape уже производные все остальные классы. Я представил класс Window как двумерный массив mass, размером двести на двести. В начале мы просто инициализируем окно вызовом Window w(40, 40) например 40 на 40 размером. все есть. Дальше я создал класс Line : public Shape ( Shape : public Window). Естественно в Window мы создаем public двумерный массив mass, чтобы мы могли его редактировать из остальных классов. Потом уже в конце при вызове Window:: print() вызвать картину на экран. Так от у меня возникли вопросы по поводу конструирования классов. От допустим возьмем функцию Line::draw(). Она имеет доступ к массиву Window::mass (двумерному, это как бы окно). Но если я в программе вначале инициализирую Window w(40,40), то функция Line::draw() не видит этот объект инициализированный, она как бы обращается к пустому классу, либо к новому классу хз. Так от интересно как же быть? мб создать массив mass статическим и размеры его? Чтобы они были видны с любого экземпляра класса? Или мб я сразу не правильно создаю? хз. От если б был бы mass статический, то мы б легко его могли заполнять вызовом разных draw() из разных классов либо через указатель на базовый класс. А затем уже вконце вывести само окно на печать. Наверно принцип программы сводится к заполнению массива который есть как бы окно? Правильно ж я понял? Добавлено через 6 минут Jupiter, Помоги с алгоритмом тыж опытный!
0
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
||
| 27.03.2013, 16:42 [ТС] | ||
|
Добавлено через 3 минуты Window -> Shape , от Shape идут все остальные классы Dot, Line, Rectangle, public наследование, чтобы можно иметь доступ к Window::mass это как бы представление окна Window. Но мне не понятно правильно ли я делаю. И вообще от кажется сам Window::mass нужно сделать static, чтобы можно было его редактировать из классво разных фигур Dot::draw(), Line::draw(), Rectangle::draw(), потому что они обращаются как бы к новому экземпляру Window Добавлено через 5 минут Jupiter, Не ну ты хоть понял как я имею введу сделать? От имеется массив Window::mass[200][200]. При инициализиции мы задаем границы Window::n, Window::m. А дальше просто Shapе наследует Window Line наследует Shape и в Line мы имеем доступ к n, m и mass, и меняем значение его, как бы в линию. Также и другую фигуру. А потом просто Window:: print() и вывилось окно в консоле, то есть массив mass.
0
|
||
|
Каратель
|
||
| 27.03.2013, 16:45 | ||
|
фигура не является окном: 1) включи голову и ещё раз подумай; 2) прочитай задачу ещё раз (ну нет там и слова про Window -> Shape); 3) прочитай главу про наследование ещё раз, сконцентрировав внимание не на синтаксисе, а на том когда применяется наследование и для чего. окно должно агрегировать фигуры
1
|
||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||||||
| 27.03.2013, 16:56 [ТС] | |||||||
|
А вообще принцип решения задачи у меня правильный? Типо сводится к заполнению массива, а затем вывода его на экран? От примерно по такому коду:
А ну я понял что ты имееш в виду нужно в каждом классе хранить указатель на объект Window. Правильно ж? Добавлено через 1 минуту Да впринципе правильно создаем объект Window w(40, 40) и при инициализации фигур передаем указатель на объект и все нам не нужно наследовать Window и делать статические элементы? Добавлено через 57 секунд Jupiter, Да ты прав. Впринципе так как то проще.
0
|
|||||||
|
Каратель
|
||||||||||||
| 27.03.2013, 17:02 | ||||||||||||
1
|
||||||||||||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|||||||
| 28.03.2013, 13:14 [ТС] | |||||||
|
Спс буду дальше разбирать до готовой версии. Добавлено через 19 часов 36 минут Здарова! От код кое как сделал, фиг его знает, что попало, пока токо для одного класса Line рабочий:
Я так могу для каждого класса передать например w.current() и вторую точку и тупо нарисовать фигуру. А как же эти переменные использовать? Да и вообще шото не то походу. Добавлено через 53 секунды Да и линии токо по диагонали рисуются. Добавлено через 3 минуты там наверно они должны быть статические раз после вызова Shape:draw w current() устанавливается в значение переменной se то есть в правый нижний угол. ????? Добавлено через 1 минуту Господа помогайте я уже замучился с ней, а еще под эту задачку дальше штук 5 упражнений ее дорабатывать. ![]() Добавлено через 1 минуту Да на линии, то пофигу, что по диаганали главное, что рисуются, мне бы правильную структуру программы составить, так как положено, от что главное, а там уже как нарисуешь так нарисуешь, то уже на втором месте. Добавлено через 16 минут Можно конечно придумать, что при инициализации например Line(Point1, Point2) можно считать это как бы верх низ и из них можно определить все остальные 9 точек. хз. как бы предположить, что мы квадрат передаем, только для Rectangle уже прямоугольник. А для круга линии и точки квадрат. Хз. Да мб не заморачиватся бахнуть как попало да и все оно мб мне и нафиг не пригодиться. Скорее всего. Добавлено через 1 минуту Satanаx 8 помогай! Чо смотриш? Добавлено через 5 минут Меня утета строчка в условии задачи непонятна "Line(x.c(),y.nw()) создает линию из центра x в левый верхний угол y" Это как понимать то? Шо это за х и шо это за у? Ну видимо объекты типа Point. Ну токо еще он какие, то функции им добавил. Да запутано все.
0
|
|||||||
|
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
|
|
| 29.03.2013, 19:15 [ТС] | |
|
Все как бы доделал http://www.kselax.ru/2013/03/p... /#more-497
0
|
|
| 29.03.2013, 19:15 | |
|
Помогаю со студенческими работами здесь
17
Графическая оболочка Графическая заставка С++ Графическая библиотека C++ Графическая заставка на С Графическая библиотека Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|