Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 11.03.2017
Сообщений: 51

Поместить прямоугольник внутрь окружности

09.12.2017, 22:39. Показов 2134. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать программу, которая проверяет, можно ли поместить заданный прямоугольник внутри заданной окружности. Использовать два класса – класс «Правильный прямоугольник» и класс «Окружность».
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.12.2017, 22:39
Ответы с готовыми решениями:

Найти количество точек с целочисленными координатами, которые попадают внутрь заданной окружности, либо лежат на границе
Задана окружность радиуса R с центром в точке (X,Y). Необходимо определить количество точек с целочисленными координатами, которые попадают...

Постройте прямоугольник по радиусу описанной окружности и двум соседним вершинам
Постройте прямоугольник, если известно, что описанная вокруг него окружность имеет радиус R, а некоторые две соседние вершины расположены в...

Поместить внутрь фона картинку
Возникла задача поместить внутрь фона картинку как это можно осуществить чтобы картинка повторяла форму фона? <div...

2
 Аватар для Геомеханик
838 / 641 / 940
Регистрация: 26.06.2015
Сообщений: 1,409
10.12.2017, 10:58
Лучший ответ Сообщение было отмечено Katerina666 как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void write_c(LPCTSTR s, WORD color);
 
class rect {
public:
    int x, y, w, h;
public:
    rect(void){}
    rect(int _x, int _y, int _w, int _h):x(_x), y(_y), w(_w), h(_h){}
};
 
class circle {
public:
    int x, y, r;
public:
    circle(void){}
    circle(int _x, int _y, int _r):x(_x), y(_y), r(_r){}
};
 
inline bool isRectInCircle(const rect& rc, const circle& cr){
    return (static_cast<double>(cr.r) * 2.0) > hypot(rc.w, rc.h);
}
 
int main(void){
    HWND hwnd = GetConsoleWindow();
    HDC  hdc  = GetDC(hwnd);
 
    HPEN    rp  = CreatePen(PS_SOLID, 1, RGB(0xFF, 0, 0));
    HPEN    gp  = CreatePen(PS_SOLID, 1, RGB(0, 0xFF, 0));
    HGDIOBJ hbr = SelectObject(hdc, (HBRUSH)GetStockObject(NULL_BRUSH));
    RECT    r;
    HGDIOBJ old;
 
    rect   rc;
    circle cr(150, 150, 100);
 
    for(int i = 0; i < 30; ++i){
        GetClientRect(hwnd, &r);
        InvalidateRect(hwnd, &r, TRUE);
 
        //задаём произвольный размер прямоугольника
        rc.w = 50 + rand() % 150;
        rc.h = 50 + rand() % 150;
 
        if(isRectInCircle(rc, cr)){
            write_c(_T("ПРЯМОУГОЛЬНИК ВХОДИТ В ОКРУЖНОСТЬ"), FOREGROUND_GREEN);
            old = SelectObject(hdc, gp);
        } else {
            write_c(_T("НЕЛЬЗЯ ПОМЕСТИТЬ ПРЯМОУГОЛЬНИК В ОКРУЖНОСТЬ"), FOREGROUND_RED);
            old = SelectObject(hdc, rp);
        }
 
        rc.x = (cr.x - cr.r) + (cr.r*2 - rc.w) / 2;
        rc.y = (cr.y - cr.r) + (cr.r*2 - rc.h) / 2;
 
        //вывод прямоугольника
        SetRect(&r, rc.x, rc.y, rc.x + rc.w, rc.y + rc.h);
        FrameRect(hdc, &r, (HBRUSH)GetStockObject(WHITE_BRUSH));
 
        //вывод окружности
        Ellipse(hdc, cr.x - cr.r, cr.y - cr.r, cr.x + cr.r, cr.y + cr.r);
        SelectObject(hdc, old);
 
        Sleep(1300);
    }
    DeleteObject(rp);
    DeleteObject(gp);
    SelectObject(hdc, hbr);
    ReleaseDC(hwnd, hdc);
    return 0;
}
 
//вывод
void write_c(LPCTSTR s, WORD color){
    TCHAR b[128];
    CharToOem(s, b);
    static HANDLE hout = GetStdHandle(STD_OUTPUT_HANDLE);
    DWORD n;
    COORD p = { 1, 0 };
    FillConsoleOutputCharacter(hout, _T(' '), 80, p, &n);
    FillConsoleOutputAttribute(hout, color | FOREGROUND_INTENSITY, 80, p, &n);
    WriteConsoleOutputCharacter(hout, b, _tcslen(b), p, &n);
}
0
0 / 0 / 0
Регистрация: 11.03.2017
Сообщений: 51
11.12.2017, 13:02  [ТС]
Геомеханик, Выдает две ошибки


аргумент типа "TCHAR *" несовместим с параметром типа "LPSTR" 85

"BOOL CharToOemW(LPCWSTR,LPSTR)": невозможно преобразовать аргумент 2 из "TCHAR [128]" в "LPSTR" 85
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2017, 13:02
Помогаю со студенческими работами здесь

Поместить html-страницы внутрь исполняемого файла
Здравствуйте, на форме есть WebBrowser. Нужно было открыть локальные html файлы. Использовал такой код: ...

Можно ли внутрь стринггрида поместить другие объекты?
Есть таблица (необязательно TStringGrid, может быть есть другой табличный компонент), как можно в ячейки этой таблицы поместить другие...

Получить заголовок изображения и поместить внутрь textarea
Всем привет, возникла такая проблема, имеется ссылка тег &lt;a&gt; и внутри неё изображение &lt;img /&gt; с атрибутом title = 'Изображение' и...

Определить, сколько точек попадет внутрь окружности
4. Заданы два одномеpных массива X и Y, содеpжащие кооpдинаты N точек на плоскости. Опpеделить, сколько точек попадет внутpь окpужности с...

Как поместить окно OpenGL внутрь какого-нибудь объекта?
Ребят помогите, а то я стаким впервые сталкиваюсь.(не опытный еще) Каким образом можно поместить окно OpenGL внутрь какого-нибудь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru