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

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

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

> Задача по формированию файлов, Помогите найти ошибку
Nolan
сообщение 30.11.2005 0:08
Сообщение #1





Группа: Пользователи
Сообщений: 8
Пол: Мужской

Репутация: -  0  +


Помогите пожалуйста найти ошибку в исходнике такой задачи:
Ввести целую квадратную матрицу A (N,N) (N<=10) Из положительных ее элементов сформировать файл F. Из файла F сформировать файл G, в который сначала записать сумму всех элементов файла F, затем максимальное значение файла F, затем все его компоненты в обратном порядке. Файл G выдать на печать.


program Project3;
const
Nmax = 10;
Kmax = Nmax*Nmax;
type
MATRIX = array[1..Nmax,1..Nmax] of integer;
aFile = File of integer;
VECTOR = array[1..Kmax] of integer;
var
A : matrix;
N : integer;
F : aFile;
G : aFile;
procedure EnterMatrix(var X : matrix; var aN : integer; ch : char);
var
i,j : integer;
begin
write('Vvedite razmernost matrizi: ');
readln(aN);
for i := 1 to aN do
for j := 1 to aN do
begin
write(ch,'[',i,',',j,']=');
readln(X[i,j]);
end;
end;
Procedure CreateF(Const x : Matrix; aN : integer; var aF : aFile);
Var
i:integer;
j:integer;
Begin
Rewrite (aF);
for i:=1 to N do
begin
for j:=1 to N do
if x[i,j]>0 then
Write (aF,A[i,j]);
end;
Close (aF);
end;
function Sum(var aF : aFile): integer;
var
S,X : integer;
begin
Reset(aF);
S:=0;
while not EOF(aF) do
begin
read(aF,X);
S:=S+X;
end;
Sum:=S;
close(aF);
end;
function Maximum(var aF : aFile): integer;
var
Y,x,max : integer;
begin
Reset(aF);
read(aF,Y);
max:=Y;
while not EOF(aF) do
begin
read(aF,x);
if Y<x
then begin
max:=x;
end;
Y:=x;
end;
Maximum:=max;
Close(aF);
end;
procedure Preobr(var aF,aG : aFile);
var
X,i,S,max : integer;
begin
Reset(aF);
ReWrite(aG);
S:=Sum(aF);
max:=Maximum(aF);
write(aG,S);
write(aG,Max);
for i := FileSize(aF)-1 downto 0 do
begin
read(aF,X);
write(aG,X);
end;
Close(aF);
Close(aG);
end;
procedure OutFile(var aG : aFile; ch : char);
var
X1 : integer;
begin
Reset(aG);
while not EOF(aG) do
begin
read(aG,X1);
writeln(ch,'[',FilePos(aG),']=',X1:4);
end;
Close(aG);
end;
begin
Assign(F,'F.dat');
Assign(G,'G.txt');
EnterMatrix(A,N,'A');
CreateF(A,N,F);
Preobr(F,G);
OutFile(G,'G');
readln;
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
klem4
сообщение 30.11.2005 8:14
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


MaxInt - паскалевская константа = 32767, тут используется для того чтобы уже перовое значение прочитанное из файла являлось максимумом, так как в integer нет числа меньше -MaxInt


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 



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