Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.19 KB | None | 0 0
  1. program Project8;
  2.  
  3. {$APPTYPE CONSOLE}
  4. {$R *.res}
  5.  
  6. uses
  7.   System.SysUtils;
  8. Type
  9.   TArr = array of integer;
  10.  
  11. function NODforTwo( M : integer; F : integer) : integer;
  12.    begin
  13.       while ( M <> F ) do
  14.          if ( M > F) then
  15.             M := M - F
  16.          else
  17.             F := F - M;
  18.       NODforTwo := M;
  19.    end;
  20.  
  21. function FindingFile(): TArr;
  22. var
  23.   CorrectFile: Boolean;
  24.   NameOfFile: String;
  25.   Input : TextFile;
  26.   n, i , k , M , F: integer;
  27.   A : TArr;
  28. begin
  29.   repeat
  30.     Write('Введите путь к файлу, с которого хотите считать информацию :');
  31.     Readln(NameOfFile);
  32.     CorrectFile := True;
  33.     try
  34.       AssignFile(Input, NameOfFile);
  35.       Reset(Input);
  36.       if not eof(Input) then
  37.          begin
  38.             ReadLn(Input, n);
  39.             SetLength(A , n);
  40.             for i := 0 to (n - 1) do
  41.                Read(Input, A[i]);
  42.             CloseFile(Input);
  43.          end
  44.       else
  45.          begin
  46.             WriteLn(' Файл оказался пустым ');
  47.             CloseFile(Input) ;
  48.          end;
  49.     except
  50.       CorrectFile := False;
  51.       Writeln('Не удалось найти файл по такому пути', NameOfFile);
  52.     end;
  53.   until CorrectFile;
  54.   FindingFile := A;
  55. end;
  56.  
  57. function NOD(A : TArr ) : integer;
  58. var
  59.    n , i , k : integer;
  60.    begin
  61.       k := NODforTwo(A[1] , A[2]);
  62.       for i := 3 to n do
  63.          k := NODforTwo(k, A[i]);
  64.       NOD := k;
  65.    end;
  66.  
  67. procedure SaveFile(NameOutput : String ; k: integer);
  68. var
  69.   Output: TextFile;
  70.   begin
  71.      Writeln('Введите путь к файлу для записи : ');
  72.      Readln(NameOutput);
  73.      AssignFile(Output,NameOutput);
  74.      Rewrite(Output);
  75.      WriteLn(Output , 'Наибольший общий делитель : ', k);
  76.      CloseFile(Output);
  77.      ReadLn;
  78.   end;
  79.  
  80. var
  81.   k : integer;
  82.   A : TArr;
  83.   NameOutput : String;
  84. begin
  85.   WriteLn('Дан массив А, состоящий из n-натуральных чисел.Найти наибольший общий делитель элементов массива.');
  86.   A := FindingFile();
  87.   k := NOD(A);
  88.   SaveFile(NameOutput, k);
  89.   ReadLn;
  90. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement