Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Чтение матрицы из файла

Автор: Hamster 18.03.2005 0:17

Чтение матрицы из файла написвть труда не составляет. А как засунуть в процедуру непонятно !?

ЗЫ. Опишите пжаласта эту процедуру(функцию) ! и как ее применить к нескоольким матрицам в одной программе ?

Автор: volvo 18.03.2005 0:21

Цитата(Hamster @ 17.03.05 19:17)
Чтение матрицы из файла написвть труда не составляет. А как засунуть в процедуру непонятно !?

Ну, если не составляет, то напишите... А потом поменяйте заголовок с Program <имя программы>; на Procedure ReadMatrix;

Автор: Hamster 18.03.2005 0:34

Если б я знал то не спрашивал бы... Если просто поменять program на procedure то компилятор ругается !

Автор: Hamster zhe 18.03.2005 0:36

Цитата(Hamster @ 17.03.05 20:17)
ЗЫ. Опишите пжаласта эту процедуру(функцию) ! и как ее применить к нескоольким матрицам в одной программе ?


Вот в чем дело :low:

Автор: volvo 18.03.2005 0:37

Приведите код если можно... Того, что труда не составляет... Именно программы, я покажу, как сделать из нее процедуру...

Автор: Guest 18.03.2005 0:58

Цитата(volvo @ 17.03.05 20:37)
Приведите код если можно... Того, что труда не составляет... Именно программы, я покажу, как сделать из нее процедуру...


Код

program vvod_matr;
const
 m=3;
 n=3;
type
 matr=array[1..m,1..n] of integer;
var
 A : matr;      {matrivca A}
 i,j : integer; {peremnnie cikla}
 inp : text;
 begin
  assign(inp, 'c:\a.txt');
  reset(inp);
  writeln('Ishodmaja Matrica A : ');
  for i:=1 to m do
  begin
   for j:=1 to n do
   read(inp,A[i,j]);
   end;
   for i:=1 to m do
   begin
  for j:=1 to n do
  write      (A[i,j],' ');
  writeln;
  end;
 readln;
 end.

PLZ.

Автор: SHnur 18.03.2005 1:04

Например так :

Код

const
m=3;
n=3;
type
  matr=array[1..m,1..n] of integer;

procedure vvod_matr;
var
A : matr;      {matrivca A}
i,j : integer; {peremnnie cikla}
inp : text;
begin
 assign(inp, 'c:\a.txt');
 reset(inp);
 writeln('Ishodmaja Matrica A : ');
 for i:=1 to m do
 begin
  for j:=1 to n do
  read(inp,A[i,j]);
  end;
  for i:=1 to m do
  begin
 for j:=1 to n do
 write      (A[i,j],' ');
 writeln;
 end;
readln;
 close(inp);
end;

begin
{main program}
   vvod_matr; {vizov proceduri}
end.


исправлено.

Автор: klem4 18.03.2005 1:06

если все остальное правильно, то ты забыл

Код
close(inp);

Автор: volvo 18.03.2005 1:08

Код
program vvod_matr;
const
 m=3;
 n=3;
type
 matr=array[1..m,1..n] of integer;

procedure read_matrix(var inp: text; var a: matr);
 var i, j: integer;
 begin
   for i:=1 to m do
     for j:=1 to n do
       read(inp,A[i,j]);
 end;

procedure print(a: matr);
 begin
   for i:=1 to m do begin
     for j:=1 to n do
       write(a[i,j], ' ');
     writeln;
   end;
 end;

var
 A, B : matr;
 inp1, inp2 : text;
begin
 assign(inp1, 'c:\a.txt'); reset(inp1);
 writeln('Матрица A : ');
 read_matr(inp1, a); print( a );
 close(inp);

 assign(inp2, 'c:\a2.txt'); reset(inp2);
 writeln('Матрица B : ');
 read_matr(inp2, B); print( b );
 Close(inp2);

 readln;
end.


SHnur
Ну попросили же:
Цитата
как ее применить к нескоольким матрицам в одной программе ?

Твою процедуру можно к нескольким матрицам применить?

Автор: Alpha7 18.03.2005 1:38

Цитата(SHnur @ 17.03.05 21:04)
Например так :

Ну ето то все понятно...
Но как ты будешь применять цвою процедуру для нескольких матриц ? Это все ясно как Божий день(все равно спасиба),
но что нада в коде поменять, что б для 2-3 матриц мона была юзать !?

Автор: volvo 18.03.2005 1:45

Alpha7, предыдущий мой ответ не нравится? Тогда объясните, чем (пост №9) angry.gif

Автор: Alpha7 18.03.2005 1:56

Цитата(volvo @ 17.03.05 21:45)
Alpha7, предыдущий мой ответ не нравится? Тогда объясните, чем (пост №9)  angry.gif

Nu kak versiju ja eto priznaju bez problem ! =)
Delo v tom, chto nuzhno schitivat` massiv iz faila i pihat` v proceduru kak :
Код

procedure vvod_matr;
var
A : matr;      {matrivca A}
i,j : integer; {peremnnie cikla}
inp : text;
begin
assign(inp, 'c:\a.txt');
reset(inp);
writeln('Ishodmaja Matrica A : ');
for i:=1 to m do
begin
 for j:=1 to n do
 read(inp,A[i,j]);
 end;
 for i:=1 to m do
 begin
for j:=1 to n do
write      (A[i,j],' ');
writeln;
end;
readln;
close(inp);
end;

Postavlu vopros inache : "Mozhno li, i kak ,esli da, primenit` etot kod dlia neskol`ki matric, meniaja tol`ko parametr funkcii,a ne samo ee telo ?

Автор: volvo 18.03.2005 2:21

Ну, если Вам нравится заново поизобретать что-нибудь, то пожалуйста... Только учтите, что приведенная процедура ничего вернуть не может, поскольку матрица описана в ней локально, следовательно она исчезнет при выходе из процедуры... Скажите спасибо SHnur-у :D

Чтобы вернуть матрицу (притом, как выясняется - не одну, а несколько), нет другого пути, кроме как использовать Var - параметры... Но этот путь Вас устраивает только "как вариант", тогда ищите другой.

Отвечаю не вопрос - нет. Нельзя применить процедуру SHnur-а для ввода нескольких матриц... У нее просто НЕТ параметров... Я уже привел свой вариант... В крайнем случае, могу посоветовать вот это:

Код
program vvod_matr;
const
 m=3; n=3;
type
 matr=array[1..m,1..n] of integer;

Procedure read_matrix(s: string; var a: matr);
var
 inp: text;
 i, j: integer;
begin
 assign(inp, s);
 reset(inp);
 for i:=1 to m do
   for j:=1 to n do
     read(inp,A[i,j]);

 for i:=1 to m do begin
   for j:=1 to n do
     write(A[i,j],' ');
   writeln;
 end;
 close(inp)
end;

var
A, B : matr;
begin
 writeln('Ishodmaja Matrica A : ');
 read_matrix('c:\a.txt', A);

 writeln('Ishodmaja Matrica B : ');
 read_matrix('c:\b.txt', B)
end.

Вот так...

Автор: Alpha7 18.03.2005 2:44

Poslednij variant, vot eto ja i imel vvidu ! :yes:
Spasiba za podskazku !

Автор: buy cialis online no prescriptio 1.09.2021 10:40

Se Puede Comprar Viagra Sin Receta Medica

Автор: buy zithromax online without per 24.09.2021 14:52

Cialis Generique Canada

Автор: what is considered a high dose o 9.10.2021 20:48

Viagra Price List

Автор: lower price on finasteride cambe 7.11.2021 23:24

Propecia En Ligne

Автор: dolor de espalda mezclar diclofe 4.12.2021 20:39

Betnovate Ointment

Автор: how does plaquenil work for auto 6.12.2021 2:11

Levitra Funziona Davvero

Автор: where to buy zithromax online ch 6.12.2021 13:13

Achat Nolvadex Proviron