Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.74 KB | None | 0 0
  1. program slova;
  2.  
  3. uses
  4.    System.SysUtils;
  5.  
  6. procedure ReadFromFile(var Sentence: String);
  7. var
  8.    FileName: String;
  9.    IsCorrect: Boolean;
  10.    InFile: Text;
  11. begin
  12.    repeat
  13.       Writeln('Введите имя файла, из которого хотите считать: ');
  14.       Readln(FileName);
  15.       FileName := FileName + '.txt';
  16.       IsCorrect := True;
  17.       Assign(InFile, FileName);
  18.       {$I-}
  19.       Reset(InFile);
  20.       {$I+}
  21.       if IOResult <> 0 then
  22.       begin
  23.          Writeln('Файл не существует!');
  24.          IsCorrect := False;
  25.       end
  26.       else
  27.       begin
  28.          Read(InFile, Sentence);
  29.          if length(Sentence) = 0 then
  30.          begin
  31.             Writeln('Файл пуст!');
  32.             IsCorrect := False;
  33.          end;
  34.       end;
  35.    until IsCorrect;
  36.    Close(InFile);
  37. end;
  38.  
  39. procedure Input(var Sentence: String);
  40. var
  41.    IsCorrect: Boolean;
  42. begin
  43. repeat
  44.    Writeln('Введите предложение: ');
  45.    Readln(Sentence);
  46.    IsCorrect := True;
  47.    if length(Sentence) = 0 then
  48.    begin
  49.       Writeln('Строка не может быть пустой!');
  50.       IsCorrect := False;
  51.    end;
  52. until IsCorrect;
  53. end;
  54.  
  55. function FlipTwo(Source: String; FirstSymbol, Space: Integer): String;
  56. var
  57.    FirstWord, SecondWord: String;
  58.    Post: Integer;
  59.    f: TReplaceFlags;
  60. begin
  61.    Source := StringReplace(Source,'#',',',f);
  62.    Source := StringReplace(Source,' ',',',f);
  63.    Post := pos(' ',Source);
  64.    if (Post = 0) then
  65.       Post := length(Source) + 1;
  66.    FirstWord := Copy(Source, FirstSymbol, Space - FirstSymbol);
  67.    SecondWord := Copy(Source, Space + 1, Post - (Space + 1));
  68.    Delete(Source, Space + 1,Post - (Space + 1));
  69.    Insert(FirstWord, Source, Space + 1);
  70.    Delete(Source, FirstSymbol, Space - FirstSymbol);
  71.    Insert(SecondWord, Source, FirstSymbol);
  72.    FlipTwo := Source;
  73. end;
  74.  
  75. procedure Swap(var Sentence: String);
  76. var
  77.    Prev, Current: Integer;
  78.     f: TReplaceFlags;
  79. begin
  80.    Prev := 1;
  81.    Current := pos(' ',Sentence);
  82.    Sentence := FlipTwo(Sentence,Prev,Current);
  83.    Sentence := StringReplace(Sentence,' ','#',f);
  84.    while pos(' ',Sentence) > 0 do
  85.    begin
  86.       Prev := pos('#',Sentence)+1;
  87.       Current := pos(' ',Sentence);
  88.       Sentence := FlipTwo(Sentence,Prev,Current);
  89.       Sentence := StringReplace(Sentence,' ','#',f);
  90.    end;
  91.    f := [rfReplaceAll];
  92.    Sentence := StringReplace(Sentence,'#',' ',f);
  93.    Sentence := StringReplace(Sentence,',',' ',f);
  94.    Writeln(Sentence);
  95. end;
  96.  
  97. procedure OutInFile(Sentence: String);
  98. var
  99.    FileName: String;
  100.    OutFile: Text;
  101. begin
  102.    Writeln('Введите имя файла для записи: ');
  103.    Readln(FileName);
  104.    FileName := FileName + '.txt';
  105.    Assign(OutFile, FileName);
  106.    Rewrite(OutFile);
  107.    Write(OutFile, Sentence);
  108.    Close(OutFile);
  109. end;
  110.  
  111. procedure Main();
  112. var
  113.    Choose: Char;
  114.    Sentence: String;
  115.    IsCorrect: Boolean;
  116. begin
  117.    Writeln('Тема: В заданном предложении, состоящем из нескольких слов, поменять местами слова, стоящие на четных местах со словами, стоящими на нечетных местах.');
  118.    Writeln('Если хотите считать предложение из файла, введите "y" или "n":');
  119.    repeat
  120.       Readln(Choose);
  121.       if (Choose <> 'y') and (Choose <> 'n') then
  122.          begin
  123.             Writeln('Неверный ввод');
  124.             IsCorrect := False;
  125.          end
  126.       else
  127.          IsCorrect := True;
  128.    until IsCorrect;
  129.    case Choose of
  130.       'y': ReadFromFile(Sentence);
  131.       'n': Input(Sentence);
  132.    end;
  133.    Swap(Sentence);
  134.    OutInFile(Sentence);
  135.    Readln;
  136. end;
  137.  
  138. begin
  139.    Main();
  140. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement