Advertisement
madopew

Untitled

Oct 21st, 2019
200
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.27 KB | None | 0 0
  1. program Project9;
  2. uses
  3.   System.SysUtils;
  4. type
  5.     Matrix = array of array of Integer;
  6.  
  7.  
  8. function ReadFile(): Matrix;
  9. var
  10.     TFile: TextFile;
  11.     I, J, Rows, Cols: Integer;
  12.     Line: String;
  13.     IsCorrect: Boolean;
  14.     Mat: Matrix;
  15. begin
  16.     repeat
  17.         IsCorrect := true;
  18.         Writeln('Введите имя файла, из которого хотите считать информацию: ');
  19.         ReadLn(Line);
  20.         Line := Line + '.txt';
  21.         try
  22.             Assign(TFile, Line);
  23.             Reset(TFile);
  24.         except
  25.             IsCorrect := False;
  26.             Writeln('Не удалось найти файл ', Line);
  27.         end;
  28.    until IsCorrect;
  29.  
  30.    ReadLn(TFile, Rows);
  31.    ReadLn(TFile, Cols);
  32.    SetLength(Mat, Rows, Cols);
  33.  
  34.    for I := 0 to Rows - 1 do
  35.    begin
  36.        for J := 0 to Cols - 1 do
  37.            Read(TFile, Mat[I,J]);
  38.        ReadLn(TFile);
  39.    end;
  40.  
  41.    CloseFile(TFile);
  42.    ReadFile := Mat;
  43. end;
  44.  
  45.  
  46. procedure Count(Mat: Matrix);
  47. var
  48.     I, J, Amount: Integer;
  49.     SkipCol: Boolean;
  50.     Line: String;
  51.     TFile: TextFile;
  52. begin
  53.     WriteLn('Введите имя файла, в который хотите сохранить результат');
  54.     ReadLn(Line);
  55.     Line := Line + '.txt';
  56.     Assign(TFile, Line);
  57.     ReWrite(TFile);
  58.  
  59.     Amount := 0;
  60.     Write(TFile, 'Номера столбцов с числами, идущими по возрастанию: ');
  61.     for I := 0 to High(Mat) do
  62.     begin
  63.         SkipCol := true;
  64.         for J := 0 to High(Mat[0])-1 do
  65.         begin
  66.             if (Mat[j+1,i] < Mat[j,i]) and SkipCol then
  67.                 SkipCol := false;
  68.         end;
  69.         if SkipCol then
  70.         begin
  71.             Write(TFile, i+1, ' ');
  72.             Amount := Amount + 1;
  73.         end;
  74.     end;
  75.     WriteLn(TFile, '');
  76.     Write(TFile, 'Количество: ', Amount);
  77.     WriteLn('Количество столбцов с числами, идущими по возрастанию: ', Amount);
  78.     CloseFile(TFile);
  79. end;
  80.  
  81.  
  82. var
  83.     Mat: Matrix;
  84.     i, j: Integer;
  85. begin
  86.     Mat := ReadFile();
  87.     Count(Mat);
  88.     WriteLn('Программа закончила свою работу. Нажмите для продолжения...');
  89.     Readln;
  90.     Readln;
  91. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement