Поиск нужной матрицы - Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Как взять конкретную матрицу из матриц в файле txt? У меня дан файл matrix.txt, там несколько матриц 4x4. Мне нужно одну из этих матриц от туда взять, как это сделать?

Решение задачи: «Поиск нужной матрицы»

textual
Листинг программы
const fName = 'matrix.txt';
 
type mType = array [1..4,1..4] of Real;
 
function GetMatrix(n : Integer) : mType;
var
  m : mType;
  f : Text;
  s : String;
  row, col : Integer;
begin
  row := 0; col := 0;
  Assign(f, fName); Reset(f);
  while Not EOF(f) and (n > 0) do
    begin
      if row = 0 then
        begin ReadLn(f, s); inc(row); end
      else
        begin
          inc(col); Read(f, m[row, col]);
          if col = 4 then
            begin
              ReadLn(f); col := 0; inc(row);
              if row > 4 then
                begin row := 0; dec(n); end;
            end;
        end;
    end;
  Close(f);
  GetMatrix := m;
end;
 
var
  m : mType;
  row, col : Integer;
begin
 
  m := GetMatrix(3); WriteLn('C =');
  for row := 1 to 4 do
    begin
      for col := 1 to 4 do Write(m[row, col]:10:4);
      WriteLn;
    end;
    
  m := GetMatrix(5); WriteLn('E =');
  for row := 1 to 4 do
    begin
      for col := 1 to 4 do Write(m[row, col]:10:4);
      WriteLn;
    end;
 
  m := GetMatrix(1); WriteLn('A =');
  for row := 1 to 4 do
    begin
      for col := 1 to 4 do Write(m[row, col]:10:4);
      WriteLn;
    end;
  
end.

Объяснение кода листинга программы

  1. Объявлены константа fName типа String со значением 'matrix.txt'.
  2. Объявлен тип mType как массив размерности [1..4,1..4] с элементами типа Real.
  3. Объявлена функция GetMatrix типа Integer с параметрами n: Integer, m: mType, f: Text, s: String, row: Integer, col: Integer.
  4. Внутри функции объявлены переменные row, col: Integer, инициализированные нулями.
  5. Открывается файл fName для чтения с помощью функции Assign(f, fName), и считывается первая строка с помощью цикла while Not EOF(f) and (n > 0).
  6. Если row равна нулю, то считывается строка с помощью ReadLn(f, s), и увеличивается row.
  7. В противном случае, считывается элемент массива m[row, col] с помощью Read(f, m[row, col]), и увеличивается col.
  8. Если col равна четырем, то считывается новая строка, col сбрасывается до нуля, и увеличивается row.
  9. Если row больше четырех, то row сбрасывается до нуля, и уменьшается n на единицу.
  10. Функция закрывается с помощью Close(f).
  11. В основной программе объявлены переменные m: mType, row, col: Integer.
  12. Вызывается функция GetMatrix с аргументом 3, и результат присваивается переменной m.
  13. Выводится значение переменной m с помощью цикла for row := 1 to 4 do, и внутри него - цикл for col := 1 to 4 do Write(m[row, col]:10:4), за которым следует WriteLn;.
  14. Вызывается функция GetMatrix с аргументом 5, и результат присваивается переменной m.
  15. Выводится значение переменной m с помощью цикла for row := 1 to 4 do, и внутри него - цикл for col := 1 to 4 do Write(m[row, col]:10:4), за которым следует WriteLn;.
  16. Вызывается функция GetMatrix с аргументом 1, и результат присваивается переменной m.
  17. Выводится значение переменной m с помощью цикла for row := 1 to 4 do, и внутри него - цикл for col := 1 to 4 do Write(m[row, col]:10:4), за которым следует WriteLn;.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.5 из 5
Похожие ответы