Archived
114 lines
3.4 KiB
C++
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;
|
|
}
|