Archived
109 lines
3.8 KiB
C++
109 lines
3.8 KiB
C++
#include <stdio.h>
|
|
#include <graphics.h>
|
|
#include <math.h>
|
|
#include <winbgim.h>
|
|
|
|
int main() {
|
|
// Êîîðäèíàòû òî÷åê A(-6, 4), B(-2, -2), C(-1, -4), D(2, 3)
|
|
int ax = -6, ay = 4, bx = -2, by = -2;
|
|
int cx = -1, cy = -4, dx = 2, dy = 3;
|
|
|
|
// Âåêòîð a ñ êîîðäèíàòàìè (B-A) è âåêòîð b ñ êîîðäèíàòàìè (D-C)
|
|
int vecA_x = bx - ax;
|
|
int vecA_y = by - ay;
|
|
|
|
int vecB_x = dx - cx;
|
|
int vecB_y = dy - cy;
|
|
|
|
// Óìíîæàåì âåêòîð a íà 2
|
|
int vec2A_x = 2 * vecA_x;
|
|
int vec2A_y = 2 * vecA_y;
|
|
|
|
// Ñêàëÿðíîå ïðîèçâåäåíèå
|
|
int scalarProduct = vec2A_x * vecB_x + vec2A_y * vecB_y;
|
|
|
|
// Îòêðûâàåì ôàéë äëÿ çàïèñè
|
|
FILE *file = fopen("Îòâåò.txt", "w");
|
|
if (file != NULL) {
|
|
fprintf(file, "Solution to the scalar product task:\n");
|
|
fprintf(file, "Vector A: (%d, %d)\n", ax, ay);
|
|
fprintf(file, "Vector B: (%d, %d)\n", bx, by);
|
|
fprintf(file, "Vector C: (%d, %d)\n", cx, cy);
|
|
fprintf(file, "Vector D: (%d, %d)\n", dx, dy);
|
|
fprintf(file, "Scalar product of 2a and b: %d\n", scalarProduct);
|
|
fclose(file); // Çàêðûâàåì ôàéë
|
|
} else {
|
|
printf("Error opening file!\n");
|
|
}
|
|
|
|
// Èíèöèàëèçàöèÿ ãðàôèêè
|
|
int gd = DETECT, gm;
|
|
initgraph(&gd, &gm, "");
|
|
|
|
// Ìàñøòàáèðîâàíèå
|
|
int scale = 30; // Øàã ñåòêè
|
|
|
|
// Ñìåùàåì íà÷àëî êîîðäèíàò â áëèæàéøóþ êëåòî÷êó
|
|
int origin_x = (getmaxx() / 2) / scale * scale; // Áëèæàéøàÿ êëåòêà ïî x
|
|
int origin_y = (getmaxy() / 2) / scale * scale; // Áëèæàéøàÿ êëåòêà ïî y
|
|
|
|
// Ðèñóåì êëåòî÷íóþ ñåòêó
|
|
setcolor(12); // Öâåò äëÿ ñåòêè
|
|
for (int i = 0; i < getmaxx(); i += scale) {
|
|
line(i, 0, i, getmaxy()); // Âåðòèêàëüíûå ëèíèè
|
|
}
|
|
for (int i = 0; i < getmaxy(); i += scale) {
|
|
line(0, i, getmaxx(), i); // Ãîðèçîíòàëüíûå ëèíèè
|
|
}
|
|
|
|
// Ðèñóåì îñè êîîðäèíàò, ñìåùåííûå ê áëèæàéøåé êëåòêå
|
|
setcolor(5);
|
|
line(0, origin_y, getmaxx(), origin_y); // Îñü X
|
|
line(origin_x, 0, origin_x, getmaxy()); // Îñü Y
|
|
|
|
// Ðèñóåì âåêòîð AB èç òî÷êè A
|
|
setcolor(RED); // Öâåò äëÿ âåêòîðà AB
|
|
line(origin_x + ax * scale, origin_y - ay * scale,
|
|
origin_x + bx * scale, origin_y - by * scale);
|
|
|
|
// Ðèñóåì âåêòîð CD èç òî÷êè C
|
|
setcolor(BLUE); // Öâåò äëÿ âåêòîðà CD
|
|
line(origin_x + cx * scale, origin_y - cy * scale,
|
|
origin_x + dx * scale, origin_y - dy * scale);
|
|
|
|
// Ïîäïèñè òî÷åê A, B, C, D (êàê íà ïðèìåðå)
|
|
setcolor(WHITE); // Âåðíóòü áåëûé öâåò äëÿ ïîäïèñåé
|
|
outtextxy(origin_x + ax * scale - 20, origin_y - ay * scale, "A");
|
|
outtextxy(origin_x + bx * scale + 10, origin_y - by * scale + 5, "B");
|
|
outtextxy(origin_x + cx * scale - 20, origin_y - cy * scale, "C");
|
|
outtextxy(origin_x + dx * scale + 10, origin_y - dy * scale + 5, "D");
|
|
|
|
// Ôîðìèðóåì ïîëíîå ðåøåíèå â âèäå òåêñòà
|
|
char solutionText[500];
|
|
sprintf(solutionText, "Ðåøåíèå:\n"
|
|
"A(%d, %d), B(%d, %d)\n"
|
|
"C(%d, %d), D(%d, %d)\n"
|
|
"2a = (2*(%d, %d))\n"
|
|
"b = (%d, %d)\n"
|
|
"Îòâåò = %d",
|
|
ax, ay, bx, by, cx, cy, dx, dy,
|
|
vecA_x, vecA_y, vecB_x, vecB_y, scalarProduct);
|
|
|
|
// Âûâîä ðåøåíèÿ â ïðàâîì âåðõíåì óãëó
|
|
int screen_width = getmaxx(); // Ïîëó÷àåì øèðèíó ýêðàíà
|
|
int line_height = 15; // Âûñîòà ñòðîêè
|
|
int y_offset = 10; // Íà÷àëüíàÿ ïîçèöèÿ ïî Y
|
|
char *line = strtok(solutionText, "\n");
|
|
while (line != NULL) {
|
|
outtextxy(screen_width - 300, y_offset, line); // Âûâîäèì ñòðîêó
|
|
y_offset += line_height; // Ñìåùàåìñÿ ïî Y
|
|
line = strtok(NULL, "\n");
|
|
}
|
|
|
|
// Îæèäàíèå íàæàòèÿ êëàâèøè
|
|
getch();
|
|
closegraph();
|
|
|
|
return 0;
|
|
}
|