Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program slova;
- uses
- System.SysUtils;
- procedure ReadFromFile(var Sentence: String);
- var
- FileName: String;
- IsCorrect: Boolean;
- InFile: Text;
- begin
- repeat
- Writeln('Введите имя файла, из которого хотите считать: ');
- Readln(FileName);
- FileName := FileName + '.txt';
- IsCorrect := True;
- Assign(InFile, FileName);
- {$I-}
- Reset(InFile);
- {$I+}
- if IOResult <> 0 then
- begin
- Writeln('Файл не существует!');
- IsCorrect := False;
- end
- else
- begin
- Read(InFile, Sentence);
- if length(Sentence) = 0 then
- begin
- Writeln('Файл пуст!');
- IsCorrect := False;
- end;
- end;
- until IsCorrect;
- Close(InFile);
- end;
- procedure Input(var Sentence: String);
- var
- IsCorrect: Boolean;
- begin
- repeat
- Writeln('Введите предложение: ');
- Readln(Sentence);
- IsCorrect := True;
- if length(Sentence) = 0 then
- begin
- Writeln('Строка не может быть пустой!');
- IsCorrect := False;
- end;
- until IsCorrect;
- end;
- function FlipTwo(Source: String; FirstSymbol, Space: Integer): String;
- var
- FirstWord, SecondWord: String;
- Post: Integer;
- f: TReplaceFlags;
- begin
- Source := StringReplace(Source,'#',',',f);
- Source := StringReplace(Source,' ',',',f);
- Post := pos(' ',Source);
- if (Post = 0) then
- Post := length(Source) + 1;
- FirstWord := Copy(Source, FirstSymbol, Space - FirstSymbol);
- SecondWord := Copy(Source, Space + 1, Post - (Space + 1));
- Delete(Source, Space + 1,Post - (Space + 1));
- Insert(FirstWord, Source, Space + 1);
- Delete(Source, FirstSymbol, Space - FirstSymbol);
- Insert(SecondWord, Source, FirstSymbol);
- FlipTwo := Source;
- end;
- procedure Swap(var Sentence: String);
- var
- Prev, Current: Integer;
- f: TReplaceFlags;
- begin
- Prev := 1;
- Current := pos(' ',Sentence);
- Sentence := FlipTwo(Sentence,Prev,Current);
- Sentence := StringReplace(Sentence,' ','#',f);
- while pos(' ',Sentence) > 0 do
- begin
- Prev := pos('#',Sentence)+1;
- Current := pos(' ',Sentence);
- Sentence := FlipTwo(Sentence,Prev,Current);
- Sentence := StringReplace(Sentence,' ','#',f);
- end;
- f := [rfReplaceAll];
- Sentence := StringReplace(Sentence,'#',' ',f);
- Sentence := StringReplace(Sentence,',',' ',f);
- Writeln(Sentence);
- end;
- procedure OutInFile(Sentence: String);
- var
- FileName: String;
- OutFile: Text;
- begin
- Writeln('Введите имя файла для записи: ');
- Readln(FileName);
- FileName := FileName + '.txt';
- Assign(OutFile, FileName);
- Rewrite(OutFile);
- Write(OutFile, Sentence);
- Close(OutFile);
- end;
- procedure Main();
- var
- Choose: Char;
- Sentence: String;
- IsCorrect: Boolean;
- begin
- Writeln('Тема: В заданном предложении, состоящем из нескольких слов, поменять местами слова, стоящие на четных местах со словами, стоящими на нечетных местах.');
- Writeln('Если хотите считать предложение из файла, введите "y" или "n":');
- repeat
- Readln(Choose);
- if (Choose <> 'y') and (Choose <> 'n') then
- begin
- Writeln('Неверный ввод');
- IsCorrect := False;
- end
- else
- IsCorrect := True;
- until IsCorrect;
- case Choose of
- 'y': ReadFromFile(Sentence);
- 'n': Input(Sentence);
- end;
- Swap(Sentence);
- OutInFile(Sentence);
- Readln;
- end;
- begin
- Main();
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement