Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Матрицы

Автор: noodles 26.12.2005 0:21

Помогите ,пожалуйста, решить задачу:
В файле A.dat дано целое n и действительная квадратная матрица порядка n.
Для данной матрицы составить матрицу B из нулей и единиц,элемент которой равен единице,
когда все соседи соответствующего элемента матрицы А меньше него самого,в противном случае-нулю.
Результат записать в файл B.res. Запись матрицы в файл оформить в виде подпрограммы.

Примерный текст программы:



type mass=array[1..10,1..10] of integer;
var a,b:mass;g,s:text;k,l,n,i,j:integer;
procedure print(a:mass;n:integer);
var i,j:integer;
begin
for i:=1 to n do begin
for j:=1 to n do
write(a[i,j]:5);
writeln;end;end;
begin
assign(s,'D:\A.dat');
print(a,n);
close(s);
for i:=1 to n do begin
for j:=1 to n do
for l:=-1 to 1 do begin
for k:=-1 to 1 do
if a[i,j]>a[i+l,j+k] then b[i,j]:=1 else b[i,j]:=0;
end;end;
assign(g,'D:\B.res');
rewrite(g);
print(b,n);
close(g);
end.


Теги !

Автор: volvo 26.12.2005 0:44

Вот такой вариант пойдет?

type
mass=array[1..10,1..10] of integer;
var
a,b:mass;
g,s:text;
k,l,n,i,j:integer;
found: boolean;

procedure input(var a: mass; var n: integer;
var f: text);
var i, j: integer;
begin
readln(f, n);
for i:=1 to n do begin
for j:=1 to n do
read(f, a[i,j]);
readln(f);
end;
end;

procedure print(a: mass; n: integer;
var f: text);
var i, j: integer;
begin
for i:=1 to n do begin
for j:=1 to n do
write(f, a[i,j]:5);
writeln(f);
end;
end;

begin
assign(s,'A.dat');
reset(s);
input(a,n,s);
close(s);

for i:=1 to n do
for j:=1 to n do begin
found := false;
for l:=-1 to 1 do
for k:=-1 to 1 do
if (i+l > 0) and (i+l <= n) and
(j+k > 0) and (j+k <= n)
then
if (a[i,j] < a[i+l,j+k]) then found := true;

if found then b[i,j] := 0 else b[i, j] := 1;
end;

assign(g,'B.res');
rewrite(g);
print(b,n,g);
close(g);
end.

Автор: noodles 26.12.2005 1:09

не работает почему-то

Автор: volvo 26.12.2005 1:16

Что значит "не работает"? Приведи номер ошибки, и где она возникает... Файл A.Dat где находится? Замени путь к нему на правильный... Я проверял вот на таком файле:

Цитата
3
1 2 3
4 5 6
7 8 7


Автор: noodles 26.12.2005 1:31

Ошибок нет,путь правильный.
Я компилирую,запускаю- моргает экран и все.
Жму ALT+F5 -тоже ничего

Автор: volvo 26.12.2005 1:33

Ну, правильно... Ты задание свое прочитай - результат пишется в файл B.Res Открой его и посмотри, что получилось...

Автор: noodles 26.12.2005 1:36

Извини smile.gif ,
спасибо,что помог.