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

Круг в консоли когда ввожу отрицательные значения выходит из видимой области

14.04.2018, 09:06. Показов 534. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа для отображения круга относительно прямой при вводе отрицательных значений выходит за консоль как исправить?
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <Windows.h>
#include <conio.h>
using namespace std;
class Circle
{
public:
    float X;
    float Y;
    float R;
    Circle(float x = 0, float y = 0, float r = 1)
    {
        this->X = x;
        this->Y = y;
        this->R = r;
    }
    bool CreateCircle(HDC hdc, float x3, float y3, float r)
    {
        POINT pt;
        MoveToEx(hdc, x3, y3, &pt);
        return Ellipse(hdc, x3, y3, x3+r, y3+r);
    }
    double Mastabe( float r, int P)
    {
    double p = double(P) / 100;
        R = r*p;
        return R;
    }
    BOOL NewCircle(HDC hdc,float x1,float x2, float x3, float y1,float y2,float y3,float r)
    {
        POINT pt;
        float x = newPointXRES(x1,x2, x3, y1, y2,y3);
        float y = newPointYRES(x1, x2, x3, y1, y2, y3);
        MoveToEx(hdc, x, y, &pt);
        return Ellipse(hdc, x, y, x+r,y+r);
    }
    BOOL MastabeCircle(HDC hdc, float x3, float y3,float r, int P)
    {
        POINT pt;
        MoveToEx(hdc, x3, y3, &pt);
        float R = Mastabe(r, P);
        return Ellipse(hdc, x3, y3, x3+R, y3+R);
    }
    float newPointX(float x1, float x2, float x3, float y1, float y2, float y3)
    {
        float x4;
        x4 = ((x2 - x1)*(y2 - y1)*(y3 - y1) + x1*pow(y2 - y1, 2) + x3*pow(x2 - x1, 2)) / (pow(y2 - y1, 2) + pow(x2 - x1, 2));
        return x4;
    }
    float newPointY(float x1, float x2, float x3, float y1, float y2, float y3)
    {
        float y4, x4;
        x4 = newPointX(x1, x2, x3, y1, y2, y3);
        y4=(x2 - x1)*(x3 - x4) / (y2 - y1) + y3;
        return y4;
    }
    float newPointXRES(float x1,float x2, float x3,float y1,float y2,float y3)
    {
        float x = newPointX(x1, x2, x3, y1, y2, y3);
        float Xres =2*x-x3;
        return Xres;
    }
    float newPointYRES(float x1, float x2, float x3, float y1, float y2, float y3)
    {
        float y = newPointY(x1, x2, x3, y1, y2, y3);
        float Yres = 2*y-y3;
        return Yres;
    }
};
BOOL DrawLine(HDC hdc, float x1, float y1, float x2, float y2)
{
    POINT pt;
    MoveToEx(hdc, x1, y1, &pt);
    return LineTo(hdc, x2, y2);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    float X, Y, X1, Y1, X2, Y2, R, res1, res2, Res1, Res2; int P; double M;
    setlocale(LC_ALL, "Russian");
    cout << "Введите координаты  первой точки вертикальной оси:";
    cin >> X1 >> Y1;
    cout << endl;
    cout << "Введите координаты  второй точки вертикальной оси:";
    cin >> X2 >> Y2;
    cout<< endl;
    cout << "Введите координаты центра круга X и Y: ";
    cin >>X >>Y;
    cout << endl;
    cout << "Введите длину радиуса: ";
    cin >>R;
    if (R <= 0)
    {
        throw ("Длина радиуса должна быть больше нуля!");
    }
    Circle crl;
    res1 = crl.newPointX(X1, X2, X, Y1, Y2, Y);
    res2 = crl.newPointY(X1, X2, X, Y1, Y2, Y);
    Res1 = crl.newPointXRES(X1, X2, X, Y1, Y2, Y);
    Res2 = crl.newPointYRES(X1, X2, X, Y1, Y2, Y);
    cout << "Введите значение масштаба:";
    cin >> P;
    M =crl.Mastabe( R, P);
    cout << "Радиус масштабированной окружности:"<<M<<endl;
    cout << "Координаты отображенной окружности:" << Res1 <<" "<< Res2 << endl;
    HWND hwnd = GetConsoleWindow(); //Берём ориентир на консольное окно (В нём будем рисовать)
    HDC hdc = GetDC(hwnd);    // Получаем контекст для рисования
    HPEN p1, p2 = CreatePen(PS_SOLID, 2, RGB(255, 0, 0)); // Создаем красное перо
    p1 = (HPEN)SelectObject(hdc, p2);  // Заносим красное перо в контекст рисования
    crl.CreateCircle(hdc, X, Y, R);
    DrawLine(hdc, X1, Y1, X2, Y2); // Проводим линию
    crl.MastabeCircle(hdc, X, Y, R, P);
    crl.NewCircle(hdc, X1, X2, X, Y1, Y2, Y, R);
    SelectObject(hdc, p1);   // Возвращаем старое перо
    ReleaseDC(hwnd, hdc);    // Освобождаем контекст рисования
    DeleteObject(p2);       // Удаляем созданное перо
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.04.2018, 09:06
Ответы с готовыми решениями:

Как заставить перемещаться скролинг области, когда переходишь на строчку 'ниже' видимой части области?
Помогите, кто чем может!!! Суть проблемы: Некие данные в в виде таблички выводятся в область определенного размера с свойством...

вроде программа работает, но когда ввожу значения
Составить программу для вычисления функции при постоянных х и у. Я написала программу, но когда начинаю вводить значения, в общем не...

Когда запускаю и ввожу параметры, то, в момент когда программа должна выполнять действие, пишет ошибку
Недавно начали изучать c++. так как в школе не было программирования (преподу пофиг было) я в универе отстаю ;c Написал программу по...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2018, 09:06
Помогаю со студенческими работами здесь

Вылетает, когда ввожу последний символ
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;Windows.h&gt; #define N 6 struct Student { char...

Не работает фильтрация когда ввожу русские буквы
Table1.Filter:='Nazvanie='+Edit1.Text; Когда ввожу в эдит например букву Г выводит ошибку что поле Г не найдено. А когда делаю...

Когда ввожу в файл данные с пробелом - выдает ошибку
Если ввожу свою фамилию &quot;Баринов&quot; - ошибку не выдает, если ввожу &quot;Баринов Филипп&quot; - начинается куча сообщений в консоли. Конкретно...

Когда ввожу testsite в броузер попадаю на localhost почему?
Все каталоги сайтов живут /var/www/ В файле testsite.conf прописано: &lt;VirtualHost *:80&gt; # The ServerName directive sets the request...

В терминале когда ввожу Is , пишет что команда не найдена
Прошу извинить если вопрос сильно донный, просто только поставил еще до конца не разобрался


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть. Дело в том, что я. . .
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер