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