4. Як ти вважаєш, для вирішення яких із перелічених завдань необхідне моделювання? а) визначення оптимального маршруту подорожі b) виробництво автомобіля c) розв'язання геометричної задачі d) написання диктанту е) годування домашньої тварини
type M = array[1..mm, 1..nn] of integer; KS = array[1..2, 1..nn] of integer;
procedure GetKS(var a: M; var b: KS; m, n: integer); { Помещает в b[1,*] суммы отрицательных элементов массива а[m,n] по столбцам, а в b[2,*] - количества этих элементов } var i, j, s, k: integer; begin for j := 1 to n do begin k := 0; s := 0; for i := 1 to m do if a[i, j] < 0 then begin s := s + a[i, j]; Inc(k) end; b[1, j] := s; b[2, j] := k end end;
procedure Init(var a: M; m, n: integer); { Заполняет массив a[m,n] случайными значениями на интервале [-50;50] и выводит их на экран } var i, j: integer; begin for i := 1 to m do begin for j := 1 to n do begin a[i, j] := Random(101) - 50; Write(a[i, j]:5) end; Writeln end end;
procedure OutKS(var a: KS; n: integer); { Выводит на экран элементы массива a[2,n]} var i, j: integer; begin for i := 1 to 2 do begin for j := 1 to n do Write(a[i, j]:5); Writeln end end;
procedure Work(var a: M; var b: KS; m, n: integer); { цикл работы с массивом } begin Init(a, m, n); GetKS(a, b, m, n); Writeln('Суммы и количество'); OutKS(b, n); end;
var a,b,c,d,x,x1,x2:real; begin write ('a='); read (a); write ('b='); read (b); write ('c='); read (c); d:=b*b-4*a*c; if d<0 then writeln ('NO') else if d>0 then begin x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); writeln ('x1=',x1:0:2,' x2=',x2:0:2) end else begin x:=-b/(2*a); writeln ('x=',x); end end.
mm = 10;
nn = 8;
type
M = array[1..mm, 1..nn] of integer;
KS = array[1..2, 1..nn] of integer;
procedure GetKS(var a: M; var b: KS; m, n: integer);
{ Помещает в b[1,*] суммы отрицательных элементов массива а[m,n] по столбцам,
а в b[2,*] - количества этих элементов }
var
i, j, s, k: integer;
begin
for j := 1 to n do
begin
k := 0; s := 0;
for i := 1 to m do
if a[i, j] < 0 then begin s := s + a[i, j]; Inc(k) end;
b[1, j] := s; b[2, j] := k
end
end;
procedure Init(var a: M; m, n: integer);
{ Заполняет массив a[m,n] случайными значениями на интервале [-50;50]
и выводит их на экран }
var
i, j: integer;
begin
for i := 1 to m do
begin
for j := 1 to n do
begin
a[i, j] := Random(101) - 50;
Write(a[i, j]:5)
end;
Writeln
end
end;
procedure OutKS(var a: KS; n: integer);
{ Выводит на экран элементы массива a[2,n]}
var
i, j: integer;
begin
for i := 1 to 2 do
begin
for j := 1 to n do Write(a[i, j]:5);
Writeln
end
end;
procedure Work(var a: M; var b: KS; m, n: integer);
{ цикл работы с массивом }
begin
Init(a, m, n);
GetKS(a, b, m, n);
Writeln('Суммы и количество');
OutKS(b, n);
end;
var
X, Y: M;
Z: KS;
begin
Writeln('Массив Х');
Work(X, Z, 10, 8);
Writeln;
Writeln('Массив Y');
Work(Y, Z, 6, 8);
end.
Тестовое решение:
Массив Х
-50 49 0 28 -8 -27 -4 -45
10 10 10 27 17 15 -35 47
-22 -42 21 40 -40 -4 1 -49
-21 37 5 -34 26 10 -33 -26
2 27 30 -46 -9 -2 33 2
-3 6 -9 -38 -29 -18 -36 28
-8 39 -16 49 -50 39 -37 5
-2 -2 -2 6 18 -21 -20 -50
-7 -15 -26 40 35 -40 5 31
-25 -31 -8 4 -45 -11 31 48
Суммы и количество
-138 -90 -61 -118 -181 -123 -165 -170
8 4 5 3 6 7 6 4
Массив Y
22 27 24 38 -24 -32 -26 13
14 -25 6 44 50 -24 34 -33
-24 -10 20 36 -43 -25 44 -19
-17 4 23 31 -4 9 -1 -41
17 1 34 42 6 -8 25 -26
-40 11 -24 10 4 12 31 50
Суммы и количество
-81 -35 -24 0 -71 -89 -27 -119
3 2 1 0 3 4 2 4
begin
write ('a='); read (a);
write ('b='); read (b);
write ('c='); read (c);
d:=b*b-4*a*c;
if d<0 then writeln ('NO')
else if d>0 then
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln ('x1=',x1:0:2,' x2=',x2:0:2)
end
else
begin
x:=-b/(2*a);
writeln ('x=',x);
end
end.