This repository has been archived on 2026-07-28. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
college-work/Задания по C и C++/с (2024)/24.cpp
T

114 lines
3.4 KiB
C++

#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <winbgim.h> // Äëÿ ðàáîòû ñ ãðàôèêîé íà Windows
int main() {
// Èíèöèàëèçàöèÿ ãðàôè÷åñêîãî ðåæèìà
int gd = DETECT, gm;
initgraph(&gd, &gm, "");
// Äàííûå çàäà÷è
int angle_ACB = 33; // Óãîë ACB
int arc_AB = 102; // Ãðàäóñíàÿ ìåðà äóãè AB
int angle_DAE = arc_AB / 2; // Óãîë DAE = ïîëîâèíà äóãè AB
// Öåíòð îêðóæíîñòè è ðàäèóñ
int x_center = getmaxx() / 2;
int y_center = getmaxy() / 2;
int radius = 150;
// Îòðèñîâêà îêðóæíîñòè
circle(x_center, y_center, radius);
// Êîîðäèíàòû òî÷åê A, B, C, D
int x_A = x_center;
int y_A = y_center + radius;
int x_B = x_center - radius * cos(M_PI / 10);
int y_B = y_center - radius * sin(M_PI / -1);
int x_C = x_center + radius * 1.5;
int y_C = y_center - radius * 1.5;
int x_D = x_center + radius * cos(M_PI / 3);
int y_D = y_center - radius * sin(M_PI / 3);
// Òåïåðü ðàññ÷èòûâàåì êîîðäèíàòû E, êîòîðàÿ äîëæíà ëåæàòü íà ëèíèè AC
// Èñïîëüçóåì ëèíåéíóþ èíòåðïîëÿöèþ äëÿ íàõîæäåíèÿ êîîðäèíàò E
float ratio = 0.6; // Ïóñòü E áóäåò íà ñåðåäèíå îòðåçêà AC
int x_E = x_A + ratio * (x_C - x_A); // Êîîðäèíàòà X
int y_E = y_A + ratio * (y_C - y_A); // Êîîðäèíàòà Y
// Îòðèñîâêà òî÷åê A, B, C, D, E
setcolor(WHITE);
circle(x_A, y_A, 5);
outtextxy(x_A - 20, y_A + 10, "A");
circle(x_B, y_B, 5);
outtextxy(x_B - 20, y_B - 20, "B");
circle(x_C, y_C, 5);
outtextxy(x_C + 10, y_C - 20, "C");
circle(x_D, y_D, 5);
outtextxy(x_D + 10, y_D - 20, "D");
circle(x_E, y_E, 5);
outtextxy(x_E - 20, y_E + -5, "E");
// Îòðèñîâêà ëèíèé ìåæäó òî÷êàìè
line(x_B, y_B, x_C, y_C); // Ëèíèÿ BC
line(x_D, y_D, x_C, y_C); // Ëèíèÿ DC
line(x_A, y_A, x_D, y_D); // Ëèíèÿ AD
line(x_A, y_A, x_E, y_E); // Ëèíèÿ AE
line(x_D, y_D, x_B, y_B); // Ëèíèÿ DB
// Íîâàÿ ëèíèÿ: ñîåäèíåíèå E, A è C
line(x_E, y_E, x_A, y_A); // Ëèíèÿ îò E ê A
line(x_A, y_A, x_C, y_C); // Ëèíèÿ îò A ê C
// Ïåðåíîñ òåêñòà ðåøåíèÿ â ëåâûé âåðõíèé óãîë
char solutionText[500];
sprintf(solutionText, "Ðåøåíèå çàäà÷è:\n"
"Óãîë ACB = %d ãðàäóñîâ\n"
"Ãðàäóñíàÿ ìåðà äóãè AB = %d ãðàäóñîâ\n"
"Óãîë DAE = %d ãðàäóñîâ",
angle_ACB, arc_AB, angle_DAE);
// Âûâîä ðåøåíèÿ â ëåâîì âåðõíåì óãëó
int screen_width = getmaxx();
int line_height = 15;
int y_offset = 10;
char *line = strtok(solutionText, "\n");
while (line != NULL) {
outtextxy(10, y_offset, line); // Ëåâûé âåðõíèé óãîë
y_offset += line_height;
line = strtok(NULL, "\n");
}
// Çàïèñü ðåøåíèÿ â ôàéë "Îòâåò.txt"
FILE *file = fopen("Îòâåò.txt", "w");
if (file == NULL) {
printf("Îøèáêà ïðè îòêðûòèè ôàéëà!\n");
return 1;
}
fprintf(file, "Ðåøåíèå çàäà÷è:\n");
fprintf(file, "Óãîë ACB = %d ãðàäóñîâ\n", angle_ACB);
fprintf(file, "Ãðàäóñíàÿ ìåðà äóãè AB = %d ãðàäóñîâ\n", arc_AB);
fprintf(file, "Óãîë DAE = %d ãðàäóñîâ\n", angle_DAE);
fclose(file);
printf("Îòâåò çàïèñàí â ôàéë 'Îòâåò.txt'.\n");
// Îæèäàíèå ââîäà äëÿ çàêðûòèÿ ãðàôè÷åñêîãî îêíà
getch();
closegraph();
return 0;
}