![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Булавка |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Женский Репутация: ![]() ![]() ![]() |
необходимо проверить является ли произведение элементов главной диагонали квадратной матрицй М ( 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.
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Проверяй, является ли дробная часть близким к нулю числом...
Кстати, совсем не обязательно делать 2 цикла, вполне хватит одного: s:=1;
for i:=1 to n do
s:=s*M[i, i];
if Frac(abs(s)) < 1E-6 then writeln('целое число') { <--- Собственно, проверка }
|
Булавка |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Женский Репутация: ![]() ![]() ![]() |
посни пожалусто что такое 1E-6, и еще вопос-матрица у нас integer ?
|
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата посни пожалусто что такое 1E-6 1E-6 = 10 в минус шестой степени (погрешность) Цитата и еще вопос-матрица у нас integer ? M:array[1..n,1..n] of integer; ![]() Но судя по заданию должно быть НЕ integer (вообще не целочисленный тип) Сообщение отредактировано: klem4 - 28.05.2006 18:12 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Булавка |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Женский Репутация: ![]() ![]() ![]() |
я тож так подумала. только real упорно не хочет приниматся
|
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
А что пишет ? Попробуй поставить {$N+} в первой строчке программы. Скорее всего дело в этом, подключения математического сопроцессора не хватает.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Ну, Real - то должен приниматься всегда... Это НЕ сопроцессорный тип... А вот S тоже должна быть описана, как Real, иначе будет попытка записать
Integer <- Real , чего компилятор не пропустит... |
Булавка |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Женский Репутация: ![]() ![]() ![]() |
вот вся программа. помогите поменять тип, только чтоб она работала
Код Program Matrica; uses crt; const n=4; var A:array[1..n,1..n] of integer; B,C:array[1..n] of integer; i,j,z,y,min,max,m,k,S:integer; 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. |
klem4 |
![]()
Сообщение
#9
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Вот тако по крайней мере запускается и отрабатвыает без ошибок
{$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.
Сообщение отредактировано: volvo - 3.11.2006 21:50 -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
![]() ![]() |
![]() |
Текстовая версия | 24.07.2025 14:33 |