Автор: QDe5n1K 12.11.2004 4:54
Сабж...
1) В общем первая процедура - ввод двумерного целочисленного массива ( количество чисел кратно 10, 10 столбцов) и запись его в файл.
2) Вторая процедура - Вызов этого двумерного массива из файла и обработка его таким образом, что в каждой строке сначала идут отрицательные числа, затем положительные, запись в другой файл...
Помогите пожалуйста...
Автор: QDe5n1K 12.11.2004 5:18
Вот наработка по первой процедуре:
Код
type TElem = shortint;
Matrix = array[1..100,1..100] of TElem;
Filex = file of TElem;
procedure file_name(var result:string);
begin
writeln(' Enter name of new file');
readln(result);
end;
procedure create_new_file(var filename:string; var m,n:integer);
var
a:matrix;
i,j:word;
numb_data:integer;
ff:filex;
begin
file_name(filename);
assign(ff,filename);
rewrite(ff);
write('Enter number of data: ');
readln(numb_data);
if numb_data mod 10 = 0 then
m:=numb_data div 10
else
m:=1+(numb_data div 10);
n:=10;
writeln('<R>-random. input of data, other keys-manual. input of data: ');
if keypressed='R' then
begin
end;
else
begin
For i:=1 to n do
begin
For j:=1 to m do
begin
write('A[',i,' ',j,']= ');
readln(A[i,j]);
end;
end;
end;
writeln('Sohraneno');
for i:=1 to n do
for j:=1 to m do
write(ff,a[i,j]);
close(ff);
end;
Но... хоть убейте, не пойму, почему не работает! (для проверки я в последний цикл вставлял write(a[i,j]); , мне выводились цифры в строчку...
Randomный ввод чисел пока не написал, это не столь важно...
Автор: Jahnerus 12.11.2004 6:10
Напиши обязательно в каком виде нужно записывать матрицу в файл...
Я написал реализацию в которой матрица записывается в файл в столбец ...
если в принцыпе это важно, то можно и переделать так проще читать данные !
Код
uses crt;
const n=3;{число строк}
type m=array[1..n,1..10] of integer;
var i,j,g:integer;
a,b:m;
procedure fwrite(a:m; s:string);
var f:text;
begin
assign(f,s);
rewrite(f);
for i:=1 to n do begin
for j:=1 to 10 do writeln(f,a[i,j]);
end;
close(f);
end;
function fread(s:string; var a:m):boolean;
var f:text;
st:string;
er:integer;
begin
fread:=true;
assign(f,s);
reset(f);
for i:=1 to n do begin
for j:=1 to 10 do begin
readln(f,st);
val(st,a[i,j],er);
if er<>0 then fread:=false;
end;
end;
close(f);
end;
begin
clrscr;
for i:=1 to n do begin
for j:=1 to 10 do begin
write('Введите M[',i,',',j,'] ');
readln(a[i,j]);
end;
end;
fwrite(a,'c:\out.dat');
if not(fread('c:\out.dat',a)) then writeln('Ошибка чтения данных');
writeln('Массив до преобразования:');
for i:=1 to n do begin
for j:=1 to 10 do write(a[i,j]:4);
writeln;
end;
for i:=1 to n do begin
g:=0;
for j:=1 to 10 do begin
if a[i,j]<0 then begin
g:=g+1;
b[i,g]:=a[i,j];
end;
end;
for j:=1 to 10 do begin
if a[i,j]>=0 then begin
g:=g+1;
b[i,g]:=a[i,j];
end;
end;
end;
writeln('Массив после преобразования:');
for i:=1 to n do begin
for j:=1 to 10 do write(b[i,j]:4);
writeln;
end;
fwrite(b,'c:\out_2.dat');
readln;
end.
Автор: QDe5n1K 12.11.2004 6:47
В файл матрицу нужно записывать в столбец.