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

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

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

 
 Ответить  Открыть новую тему 
> Файлы и запись матриц в них
QDe5n1K
сообщение 12.11.2004 0:54
Сообщение #1


Новичок
*

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

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


Сабж...
1) В общем первая процедура - ввод двумерного целочисленного массива ( количество чисел кратно 10, 10 столбцов) и запись его в файл.
2) Вторая процедура - Вызов этого двумерного массива из файла и обработка его таким образом, что в каждой строке сначала идут отрицательные числа, затем положительные, запись в другой файл...
Помогите пожалуйста...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
QDe5n1K
сообщение 12.11.2004 1:18
Сообщение #2


Новичок
*

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

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


Вот наработка по первой процедуре:
Код

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ный ввод чисел пока не написал, это не столь важно...

Сообщение отредактировано: QDe5n1K - 12.11.2004 1:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jahnerus
сообщение 12.11.2004 2:10
Сообщение #3


Уникальный
**

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

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


Напиши обязательно в каком виде нужно записывать матрицу в файл...
Я написал реализацию в которой матрица записывается в файл в столбец ...
если в принцыпе это важно, то можно и переделать так проще читать данные !
Код
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.


--------------------
Век живи, век учи С © by Jahnerus
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
QDe5n1K
сообщение 12.11.2004 2:47
Сообщение #4


Новичок
*

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

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


В файл матрицу нужно записывать в столбец.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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