необходимо проверить является ли произведение элементов главной диагонали квадратной матрицй М ( n=4)
целым числом.
я написала программу для нахождения произведения диагонали, но как проверить является ли оно целым числом?
program matrica;
uses crt;
const n=4;
var
M:array[1..n,1..n] of integer;
i,j,s;integer;
begin
writeln ('введите матрицу М');
for i:=1 to n do
for j:=1 to n do
read (M[i,j];
s:=1;
for i:=1 to n do
for j:=1 to n do
if i=j then
S:=s*M[i,j];
writeln ('s=',s:4);
readln;
end.
Проверяй, является ли дробная часть близким к нулю числом...
Кстати, совсем не обязательно делать 2 цикла, вполне хватит одного:
s:=1;
for i:=1 to n do
s:=s*M[i, i];
if Frac(abs(s)) < 1E-6 then writeln('целое число') { <--- Собственно, проверка }
посни пожалусто что такое 1E-6, и еще вопос-матрица у нас integer ?
я тож так подумала. только real упорно не хочет приниматся
А что пишет ? Попробуй поставить {$N+} в первой строчке программы. Скорее всего дело в этом, подключения математического сопроцессора не хватает.
Ну, Real - то должен приниматься всегда... Это НЕ сопроцессорный тип... А вот S тоже должна быть описана, как Real, иначе будет попытка записать
Integer <- Real
, чего компилятор не пропустит...
вот вся программа. помогите поменять тип, только чтоб она работала
Вот тако по крайней мере запускается и отрабатвыает без ошибок
{$N+}
Program Matrica;
uses crt;
const n=4;
var
A:array[1..n,1..n] of single;
B,C:array[1..n] of single;
i,j,z,y,m,k : integer;
S, min, max:single;
begin
writeln ('ввод масива А');
for i:=1 to n do
for j:=1 to n do
read (A[i,j]);
for i:=1 to n do
begin
m:=m+1;
for j:=1 to n do
B[m]:=B[m]+A[i,j];
end;
min:=B[1];
z:=1;
for m:=1 to n do
if B[m]<min then
begin
min:=B[m];
z:=m;
end;
for j:=1 to n do
begin
k:=k+1;
for i:=1 to n do
begin
A[i,j]:=abs(A[i,j]);
C[k]:=C[k]+A[i,j];
end;
end;
max:=C[n];
y:=n;
for k:=1 to n do
if C[k]>max then
begin
max:=C[k];
y:=k;
end;
s:=1;
for i:=1 to n do
for j:=1 to n do
if i=j then
S:=s*A[i,j];
if frac(abs(s))<1e-6 then
writeln ('произведение элементов диагонали целое число');
writeln('min=',min:4,' z=',z:4);
writeln('max=',max:4,' y=',y:4);
writeln ('s=',s:3);
readln;
repeat until keypressed
end.