Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Написать рекурсивную функцию для перевода натурального числа из шестнадцатеричной системы счисления в десятичную Задание: Написать рекурсивную функцию для перевода натурального числа из шестнадцатеричной системы счисления в десятичную. C++: #include <iostream> #include <cmath> #include <string> #include <vector> using namespace std; https://www.cyberforum.ru/ cpp-beginners/ thread2937724.html C++ Определите количество пар чисел, в которых ровно один из двух элементов больше, чем сумма цифр всех чисел в файле, ...
Здравствуйте, помогите пожалуйста Напишите пожалуйста В файле 17-243.txt содержится последовательность целых чисел. Элементы последовательности могут принимать целые значения от 0 до 10 000 включительно. Определите количество пар чисел, в которых ровно один из двух элементов больше, чем сумма цифр всех чисел в файле, делящихся на 49, а десятичная запись другого оканчивается на 7. В ответе...
C++ Возникла проблема с задачкой https://www.cyberforum.ru/ cpp-beginners/ thread2937703.html
Первую часть получилось сделать, а со второй проблема. Буду признателен за помощь. Задача: Сформировать список из N чисел, добавляя элементы в голову. Преобразовать список, вставляя после каждой пары элементов списка их произведение. #include <iostream> #include <list> using namespace std; int main() {
C++ Поменять местами строки двумерного массива. строки выбираются случайным образом не могу понять, как выбрать случайную строку https://www.cyberforum.ru/ cpp-beginners/ thread2937678.html
C++ Функция сортирующая методом пузырька первую половину массива по убыванию
Помогите решить пожалуйста. Напишите функцию void sortHalfs(double arr, int nSize), которая сортирует методом пузырька первую половину массива (nSize/2) по убыванию, а вторую — по возрастанию.
C++ Функция находящая два элемента массива дающих максимальную разность Всем привет! помогите пожалуйста решить задачку. Напишите функцию double maxDiffInArray(double arr, int nSize) находящую два элемента массива a и b, дающих максимальную разность (a-b) среди всех возможных элементов массива и возвращающую эту разность. Например для массива double arr{-2, 5, 12, 3, 10, -9, 6} функция возвратит 21 = 12 - (-9). https://www.cyberforum.ru/ cpp-beginners/ thread2937630.html
C++ Функция возвращающая максимальную сумму двух элементов массива https://www.cyberforum.ru/ cpp-beginners/ thread2937629.html
Всем привет! помогите пожалуйста решить задачку. Напишите функцию double maxSumInArray(double arr, int nSize) возвращающую максимальную сумму двух элементов массива.
C++ Функция возвращающая индекс первого из элементов массива имеющего максимальное значение
Всем привет! помогите пожалуйста решить задачку. Напишите функцию double maxIndex(double arr, int nSize) возвращающую индекс первого из элементов массива, имеющего максимальное значение.
C++ Функция возвращающая максимальное значение элементов массива https://www.cyberforum.ru/ cpp-beginners/ thread2937627.html
Всем привет! помогите пожалуйста решить задачку. Напишите функцию double maxValue(double arr, int nSize) возвращающую максимальное значение элементов массива.
C++ Что с utf-8? https://www.cyberforum.ru/ cpp-beginners/ thread2937625.html
Код: int main(int argc, char *argv){ char buffer; if(argc > 2){ printf(""); system("pause"); exit(1); } ifstream file(argv);
C++ Свой класс для работы с диском
Для упрощения работы с диском и файлами хочу написать свой класс. Есть разные способы сканирования директории и работы с файлами. Возникает вопрос какой способ лучше выбрать. Я не сторонник подключения сторонних библиотек. Склоняюсь к использованию opendir()/readdir()/closedir() (POSIX) это может работать как в linux так и в windows, мало документации Для windows конечно можно использовать...
C++ Ошибка в тесте Говорят, что не проходят некоторые тесты при сдаче. Проблема: Для target2 - строки и так бОльшей чем префикс - Вы ищете upper_bound - то есть итератор на элемент, который точно больше и так большего значения. Группировка по символу Напишите функцию FindStartsWith: принимающую отсортированный набор строк в виде итераторов range_begin, range_end и один символ prefix; возвращающую диапазон... https://www.cyberforum.ru/ cpp-beginners/ thread2937616.html
21 / 1 / 0
Регистрация: 21.01.2020
Сообщений: 57
0

Рисование правильных многоугольников FLTK - C++ - Ответ 16019311

23.01.2022, 16:12. Показов 306. Ответов 0
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Дорогие товарищи-форумчане требуется ваша помощь.
Суть в том чтобы написать программу чтобы строить многоугольники мышкой, с этой задачей я разобрался и всё реализовал.
Все бы ничего, но нужно реализовать несколько исключений: отсутствие самопересечений(линии многоугольника не должны пересекаться); один многоугольник не должен пересекать другой многоугольник; нельзя рисовать многоугольник внутри другого многоугольника.
Можно сделать так чтобы нельзя было просто ставить точку, либо можно выводить на экран ошибку, разницы нет.
Может кто знает как это реализовать и сможет помочь...

Прикрепляю исходный код.

Код
#include <FL/Fl_Double_Window.H>
#include <FL/Fl.H>
#include <FL/fl_draw.H>
#include <FL/Fl_Button.H>
#include <stdio.h>
int Npoly=0, Ncur=0;
int Xpoly[20][100], Ypoly[20][100], Spoly[20];
int inpoly(int N, int x, int y)
{
  for (int i=0; i<Spoly[N]; i++)  
;
 
}
class EventWindow: public Fl_Double_Window
{
        private:
                int handle_mouse(int event, int button, int x, int y);
        public:
                EventWindow(int width, int height);
                int handle(int e);
};
char * foo;
int first=1, X0, Y0, X, Y, XF, YF;
EventWindow::EventWindow(int width, int height)
:Fl_Double_Window(width, height, "")
{      
        label("Demo Window ");
}
 
int EventWindow::handle(int event)
{
        switch (event) {
                        case FL_PUSH:
                        case FL_RELEASE:
                        case FL_DRAG:
                        case FL_MOVE:
             return handle_mouse(event,Fl::event_button(),
                 Fl::event_x(),Fl::event_y());          
                        case FL_FOCUS:
                                        return 1;
                        case FL_UNFOCUS:
                                        return 1;
                        default:
                                        return Fl_Window::handle(event);
        };
}
 
int EventWindow::handle_mouse
     (int event, int button, int x, int y) 
{
        if (foo) delete [] foo;
        foo = new char[100];
    int ret = 0;
   X=x; Y=y;
    switch ( button ) {
               case 1: // LMB
                       ret = 1;
                        if ( event == FL_PUSH ) {
                     if (first) {
                        XF = X0 = x; YF = Y0 = y; first=0;
 
                       }
                      else {
                       fl_line(x,y,X0,Y0);
                          X0=x; Y0=y;
                        };
                        printf("LMB PUSH ( %d , %d )\n",x,y); fflush(stdout);
;
                        }
                       else if ( event == FL_RELEASE ) {
                       fl_color(FL_BLACK);
                       fl_line(x,y,X0,Y0);
                          X0=x; Y0=y;
 
                                        }
                                        break;
                  case 2: // MMB
                           ret = 1;
                           if ( event == FL_PUSH ) {
                             printf("MMB Push ( %d , %d )\n",x,y); fflush(stdout);
                           }
                           else if (event == FL_DRAG ) {
                             printf("MMB Drag ( %d , %d )\n",x,y); fflush(stdout);
                           }
 
                           else if ( event == FL_RELEASE ) {
                              printf("MMB Release ( %d , %d )\n",x,y); fflush(stdout);
                        }
                        break;
                 case 3: // RMB
                          ret = 1;  first=1;
                          if ( event == FL_PUSH ) {
                                          printf("RMB Push ( %d , %d )\n",x,y); fflush(stdout);
                       fl_line(XF,YF,X0,Y0);
                          }
                          else if (event == FL_DRAG ) {
                              printf("RMB Drag ( %d , %d )\n",x,y); fflush(stdout);
                          }
                          else if ( event == FL_RELEASE ) {
                                          printf("RMB Release ( %d , %d )\n",x,y);
fflush(stdout);
                            }
                            break;
                     }
     return ret;
}
 
 
class DrawX : public Fl_Widget {
public:
    DrawX(int X, int Y, int W, int H, const char*L=0) : Fl_Widget(X,Y,W,H,L)
     {
     }
    void draw() {
                  fl_color(FL_BLACK);
                }
};
 
int main() 
{
 Npoly=Ncur=0;
   EventWindow b(800, 800);
  DrawX draw_x(0, 0, b.w(), b.h());
  b.resizable(draw_x);
  b.show();
  return(Fl::run());
}


Вернуться к обсуждению:
Рисование правильных многоугольников FLTK C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2022, 16:12
Готовые ответы и решения:

FLTK построение правильных многоугольников
Привет всем! Кто может пояснить такую вещь: Вот задание: Определите класс Regular_polygon. В...

Проверить лежит ли один из многоугольников строго внутри другого и определить площади многоугольников
Два выпуклых многоугольника заданы на плоскости перечислением координат вершин в порядке обхода...

FLTK, нет файла fltk.lib
Прохожу 12 главу Страуструпа, всё изгуглил, и почти пришёл к решению. После установки ftlk в vs, у...

Рисование правильных многоугольников
Дорогие товарищи-форумчане требуется ваша помощь. Суть в том чтобы написать программу чтобы...

Двенадцать правильных многоугольников
Двенадцать правильных многоугольников с заданным числом сторон, заданы координаты двух вершин одной...

0
23.01.2022, 16:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2022, 16:12
Помогаю со студенческими работами здесь

Уравнение правильных многоугольников в полярных координатах
Многоугольник является выпуклым, если никакая сторона многоугольника, будучи неограниченно...

Рисование многоугольников
Осуществить вывод на экран сцены, состоящей из 10 многоугольников, случайным образом расположенных...

Подсчет правильных и не правильных ответов
Есть счетчик, который считает количество баллов, правильный ответ на вопрос +1 балл, всего вопросов...

FLTK
Задали написать модель солнечной системы при помощи этой библиотеки, толком ничего не объяснив по...

FLTK
Добрый день, подскажите начинающему, как мне установить (использовать) библиотеку fltk в среде...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru