1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
| uses crt,graph; //Подключаем консольку и Graph - графический построитель
const //Раздел констант
n = 2; //Целочисленная константа n = 2
var //раздел описания переменных
a, a1: array [1..n, 1..n] of real; //Объявлены два двумерных массива - a и a1 размерностью n строк и n столбцов, элементы которых типа чисел с плавающей точкой
b, b1, x: array [1..n] of real; //Три массива b b1 и x, такие же, как и предыдущие только ОДНОмерные
function f(a, b, c, x: real): real; //Функция f, приниммает аргументы a, b, c, x типа чисел с плавающей точкой и возвращает число такого же типа
begin //начало тела ф-ии
f := -a * x / b + c / b; //Задание значения ф-ии выражением -a * x / b + c / b
end; //конец описания ф-ии
var //раздел описания переменных
i, j, k, x0, y0: integer; //Объявлние пяти переменных типа целых чисел
delenie, xn, xk, m, z, x1, y1: real; //Объявлние семи переменных типа чисел с плавающей точкой
s, s1: string; //Объявлние двух переменных типа строк
begin //начало основного тела программы
clrscr; //очистка экрана (консоли), она появится на экране
writeln('Vedite X1:'); //Выводим сообщение Vedite X1:
readln(a[1, 1]); //считываем элемент массива a[1, 1]
writeln('Vedite Y1:'); //Выводим сообщение Vedite Y1:
readln(a[1, 2]); //считываем элемент массива a[1, 2]
writeln('Vedite koeffesent 1:'); //Выводим сообщение Vedite koeffesent 1:
readln(b[1]); //считываем элемент массива b[1]
writeln('Vedite X2:'); //Выводим сообщение Vedite X2:
readln(a[2, 1]); //считываем элемент массива a[2, 1]
writeln('Vedite Y2:'); //Выводим сообщение Vedite Y2:
readln(a[2, 2]); //считываем элемент массива a[2, 2]
writeln('Vedite koeffesent 2:'); //Выводим сообщение Vedite koeffesent 2:
readln(b[2]); //считываем элемент массива b[2]
a1 := a; //присваиваем a1 a
b1 := b; //присваиваем b1 b
writeln('Rasshirenaya matrisa: ');//Выводим сообщение Rasshirenaya matrisa:
for i := 1 to n do //запускаем цикл for для i от 1 до n
begin //начало тела цикла
for j := 1 to n do //запускаем цикл for для j от 1 до n
write(a[i, j]:6:2); //выводим a[i, j] в формате 6 знаков и 2 знака после запятой
write(b[i]:6:2); //выводим b[i] в формате 6 знаков и 2 знака после запятой
writeln; //выводим конец строки (переход на новую)
end; //конец тела цикла
for i := 1 to n - 1 do //запускаем цикл for для i от 1 до n - 1
begin //начало тела цикла
for k := i + 1 to n do //запускаем цикл for для k от i + 1 до n
begin //начало тела цикла
delenie := a[k, i] / a[i, i]; //переменной delenie присваиваем a[k, i] / a[i, i]
for j := i + 1 to n do //запускаем цикл for для j от i + 1 до n
a[k, j] := a[k, j] - a[i, j] * delenie; //переменной a[k, j] присваиваем a[k, j] - a[i, j] * delenie
b[k] := b[k] - b[i] * delenie; //переменной b[k] присваиваем b[k] - b[i] * delenie
end; //конец тела цикла
end; //конец тела цикла
for i := n downto 1 do //запускаем цикл for для i от n до 1
begin //начало тела цикла
for j := i + 1 to n do //запускаем цикл for для j от i + 1 до n
b[i] := b[i] - a[i, j] * x[j]; //переменной b[i] присваиваем b[i] - a[i, j] * x[j]
x[i] := b[i] / a[i, i]; //переменной x[i] присваиваем b[i] / a[i, i]
end;//конец тела цикла
writeln('Otvet : ');//выводим сообщение Otvet :
for i := 1 to n do //запускаем цикл for для i от 1 до n
writeln('X[', i:1, ']=', x[i]:1:2);//выводим сообщение 'X[', i:1, ']=', x[i]:1:2
write('Nagmite na libuy klavishu: '); //выводим сообщение Nagmite na libuy klavishu:
readln; //считываем сторку вникуда
x0 := 0; //x0 присваиваем 0
initgraph(x0, y0, '');{инициализация графического режима}
xn := -16; //xn присваиваем -16
xk := 10;{интервал по Х}
x0 := getmaxX div 2;{начало координат по Х}
y0 := getmaxY div 2;{начало координат по Y}
m := (y0 - 40) / F(a1[1, 1], a1[1, 2], b1[1], xk); //m присваиваем (y0 - 40) / F(a1[1, 1], a1[1, 2], b1[1], xk)
line(x0 - round(17 * m), y0, x0 + round(17 * m), y0);{оси}
line(x0, 0, x0, getmaxY); //чертим линию из точки (x0, 0) в (x0, getmaxY)
for i := 1 to 16 do{максимальное количество засечек в одну сторону}
begin //начало тела цикла
line(x0 - 3, y0 - round(i * m), x0 + 3, y0 - round(i * m));{засечки на оси У}
line(x0 - 3, y0 + round(i * m), x0 + 3, y0 + round(i * m)); // Линия
line(x0 + round(i * m), y0 - 3, x0 + round(i * m), y0 + 3); {засечки на оси Х}
line(x0 - round(i * m), y0 - 3, x0 - round(i * m), y0 + 3); // Линия
if i mod 2 = 0 then //если i чётно
begin{подпись оси У}
str(i, s); //строка
outtextXY(x0 - 25, y0 - round(i * m), s);{соответственно засечкам}
outtextXY(x0 - 30, y0 + round(i * m), '-' + s);{подпись оси Х}
outtextXY(x0 + round(i * m), y0 + 10, s); //вывод текста
outtextXY(x0 - round(i * m) - 10, y0 + 10, '-' + s); //вывод текста
end; //конец if
end;{подписи концов осей}
outtextXY(x0 + round(16 * m), y0 - 20, 'X');//вывод текста
outtextXY(x0 + 5, 10, 'Y');{график} //вывод текста
z := xn; //присваиваем z значение xn
setcolor(12); //устанавливаем цвет поля 12
while z <= xk do //пока z меньше либо равно xk
begin //начало тела цикла
if z = xn then moveto(x0 + round(z * m), y0 - round(F(a1[1, 1], a1[1, 2], b1[1], z) * m)) //если [условие] то перемещаемся в соответствующую точку
else lineto(x0 + round(z * m), y0 - round(F(a1[1, 1], a1[1, 2], b1[1], z) * m)); //иначе линия в соответствующую точку
z := z + 0.1; //увеличиваем z на 0.1
end; //конец цикла
z := xn; //присваиваем z значение xn
setcolor(10); //устанавливаем цвет поля 10
while z <= xk do //пока z меньше либо равно xk
begin //начало тела цикла
if z = xn then moveto(x0 + round(z * m), y0 - round(F(a1[2, 1], a1[2, 2], b1[2], z) * m)) //если [условие] то перемещаемся в соответствующую точку
else lineto(x0 + round(z * m), y0 - round(F(a1[2, 1], a1[2, 2], b1[2], z) * m)); //иначе линия в соответствующую точку
if abs(F(a1[1, 1], a1[1, 2], b1[1], z) - F(a1[2, 1], a1[2, 2], b1[2], z)) < 0.01 then //если [условие]
begin //начало if
x1 := z; //присваиваем x1 z
y1 := F(a1[2, 1], a1[2, 2], b1[2], z); //присваиваем y1 F(a1[2, 1], a1[2, 2], b1[2], z)
end;
z := z + 0.1; //увеличиваем z на 0.1
end;
setcolor(14); //устанавливаем цвет поля 14
setfillstyle(1, 14); //устанавливаем стиль заполнения 14
fillellipse(x0 + round(x1 * m), y0 - round(y1 * m), 3, 3);{название} //рисуем эллипс
setcolor(14); //устанавливаем цвет поля 14
str(x1:0:1, s); //пишем s на поле
str(y1:0:1, s1); //пишем s1 на поле
outtextXY(10, 120, 'x=' + s + ' y=' + s1); //выводим текст на поле
readln //запрашиваем ввод
end. //конец основного тела программы |