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

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;
}