Нужно написать программный код на C++ для рисования круга, используя уравнение Декарта, чтобы в консоль вывелся круг, который раскрашен снизу в желтый, а сверху – в синий (желательно, чтобы круг был в центре консоли)
только с помощью функций для работы с консолью - цвет, позиция печати, БЕЗ эскейп символов...
Ответы
Ответ:
только сначала проверьте прежде чем лайкать мой ответ
#include <ncurses.h>
#include <math.h>
#define PI 3.14159265
int main() {
// инициализация ncurses
initscr();
noecho(); // отключение отображения вводимых символов
curs_set(FALSE); // скрытие курсора
// определение размеров окна
int height, width;
getmaxyx(stdscr, height, width);
// определение радиуса круга и его центра
int radius = fmin(height, width) / 4;
int center_x = width / 2;
int center_y = height / 2;
// отрисовка круга
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
int dx = x - center_x;
int dy = y - center_y;
int distance = sqrt(dx*dx + dy*dy);
if (distance <= radius) {
// раскраска круга в зависимости от положения точки
if (y < center_y) {
attron(COLOR_PAIR(1)); // синий цвет
} else {
attron(COLOR_PAIR(2)); // желтый цвет
}
mvprintw(y, x, " "); // вывод пробела на экран в текущей позиции
}
}
}
// ожидание нажатия клавиши перед завершением программы
getch();
// выход из ncurses
endwin();
return 0;
}