Задача №1 var a:array[1..4, 1..5] of integer; i,j,k:integer; begin writeln('Заполните матрицу'); for i:=1 to 4 do for j:=1 to 5 do begin read(a[i,j]); if (a[i,j] mod 3=0) and (a[i,j]>20) then k:=k+a[i,j]; end; writeln('Сумма элементов кратных 3-м и > 20 = ',k); end.
Задача №2 var a:array[1..5, 1..5] of integer; i,j,k:integer; begin writeln('Заполните матрицу'); for i:=1 to 5 do for j:=1 to 5 do begin read(a[i,j]); if i=j then k:=k+a[i,j]; end; writeln('Сумма элементов главной диагонали = ',k); end.
Sub Alg_1() xN = -5: xK = 5: h = 0.1 x = xN: i = 1 Do While x <= xK y = 3 * x ^ 2 - 6 * x + 5 Cells(i, 1) = x: Cells(i, 2) = y x = x + h: i = i + 1 Loop End Sub
Во вложении файл с рабочей книгой MS Excel 2003. Макрос на листе 1.
Теперь о Вашей ошибке
Dim xN, xK, x As Integer Dim y, h As Single xN = -5 ... h = 0.1 x = xN ... x = x + h
Такое описание означает, что xN, xK будут типа Variant, х - типа Integer. y тоже будет типа Variant, h - типа Single. При выполнении опeратора x=x+h целочисленное x сначала увеличится на 0.1, а затем дробная часть будет отброшена. Поэтому х постоянно будет равен xN и цикл станет бесконечным.
var a:array[1..4, 1..5] of integer;
i,j,k:integer;
begin
writeln('Заполните матрицу');
for i:=1 to 4 do
for j:=1 to 5 do begin
read(a[i,j]);
if (a[i,j] mod 3=0) and (a[i,j]>20) then k:=k+a[i,j];
end;
writeln('Сумма элементов кратных 3-м и > 20 = ',k);
end.
Задача №2
var a:array[1..5, 1..5] of integer;
i,j,k:integer;
begin
writeln('Заполните матрицу');
for i:=1 to 5 do
for j:=1 to 5 do begin
read(a[i,j]);
if i=j then k:=k+a[i,j];
end;
writeln('Сумма элементов главной диагонали = ',k);
end.
xN = -5: xK = 5: h = 0.1
x = xN: i = 1
Do While x <= xK
y = 3 * x ^ 2 - 6 * x + 5
Cells(i, 1) = x: Cells(i, 2) = y
x = x + h: i = i + 1
Loop
End Sub
Во вложении файл с рабочей книгой MS Excel 2003. Макрос на листе 1.
Теперь о Вашей ошибке
Dim xN, xK, x As Integer
Dim y, h As Single
xN = -5
...
h = 0.1
x = xN
...
x = x + h
Такое описание означает, что xN, xK будут типа Variant, х - типа Integer.
y тоже будет типа Variant, h - типа Single.
При выполнении опeратора x=x+h целочисленное x сначала увеличится на 0.1, а затем дробная часть будет отброшена. Поэтому х постоянно будет равен xN и цикл станет бесконечным.