IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Матрицы
noodles
сообщение 25.12.2005 20:21
Сообщение #1


Гость






Помогите ,пожалуйста, решить задачу:
В файле 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.


Теги !

Сообщение отредактировано: klem4 - 25.12.2005 20:29
 К началу страницы 
+ Ответить 
volvo
сообщение 25.12.2005 20:44
Сообщение #2


Гость






Вот такой вариант пойдет?
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
сообщение 25.12.2005 21:09
Сообщение #3


Гость






не работает почему-то
 К началу страницы 
+ Ответить 
volvo
сообщение 25.12.2005 21:16
Сообщение #4


Гость






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

 К началу страницы 
+ Ответить 
noodles
сообщение 25.12.2005 21:31
Сообщение #5


Гость






Ошибок нет,путь правильный.
Я компилирую,запускаю- моргает экран и все.
Жму ALT+F5 -тоже ничего
 К началу страницы 
+ Ответить 
volvo
сообщение 25.12.2005 21:33
Сообщение #6


Гость






Ну, правильно... Ты задание свое прочитай - результат пишется в файл B.Res Открой его и посмотри, что получилось...
 К началу страницы 
+ Ответить 
noodles
сообщение 25.12.2005 21:36
Сообщение #7


Гость






Извини smile.gif ,
спасибо,что помог.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 16.05.2024 4:42
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"