Advertisement
THOMAS_SHELBY_18

Lab3_1(Delphi DEMO)

Nov 8th, 2023
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.83 KB | Source Code | 0 0
  1. Program Lab3_1;
  2.  
  3. Uses
  4.     System.SysUtils;
  5. Var
  6.     J, PrevJ, NumWord: Integer;
  7.     Text, NewText: String;
  8.     IsNumWordEven: Boolean;
  9.  
  10. Procedure PrintCondition();
  11. Begin
  12.     Writeln('Данная программа выведет каждое нечетное слово в кавычках, а каждое четное - в квадратных скобках');
  13.     Writeln('Введите текст:');
  14. End;
  15.  
  16. Function ReadText(): String;
  17. Var
  18.     TextIn: String;
  19. Begin
  20.     Readln(TextIn);
  21.     ReadText := TextIn;
  22. End;
  23.  
  24. Function GetNextSpaceIndex(Text: String; PrevI: Integer): Integer;
  25. Var
  26.     I: Integer;
  27.     C: Char;
  28. Begin
  29.     I := PrevI;
  30.     Repeat
  31.         Inc(I);
  32.         C := Text[I];
  33.     Until ((C = #32) Or (I = Length(Text)));
  34.     GetNextSpaceIndex := I;
  35. End;
  36.  
  37.  
  38. Function GetNewWord(Var Text: String; Var I: Integer; PrevI: Integer; IsNumWordEven: Boolean): String;
  39. Var
  40.     NumWord, NextI: Integer;
  41.     Word: String;
  42.     BeginSym, EndSym: Char;
  43. Begin
  44.  
  45.     NextI := GetNextSpaceIndex(Text, PrevI);
  46.     I := PrevI + 1;
  47.  
  48.     If IsNumWordEven Then
  49.     Begin
  50.         BeginSym := '[';
  51.         EndSym := ']';
  52.     End
  53.     Else
  54.     Begin
  55.         BeginSym := '"';
  56.         EndSym := '"';
  57.     End;
  58.  
  59.  
  60.     Word := BeginSym;
  61.     Repeat
  62.         Word := Word + Text[I];
  63.         Inc(I);
  64.     Until (I = NextI);
  65.     Word := Word + EndSym;
  66.     GetNewWord := Word;
  67. End;
  68.  
  69. Begin
  70.     PrintCondition();
  71.  
  72.     Text := ReadText();
  73.     Text := Text + ' ';
  74.  
  75.     NumWord := 1;
  76.     J := 0;
  77.     Repeat
  78.         PrevJ := J;
  79.         If NumWord Mod 2 = 1 Then
  80.             IsNumWordEven := False
  81.         Else
  82.             IsNumWordEven := True;
  83.  
  84.         NewText := NewText + GetNewWord(Text, J, PrevJ, IsNumWordEven) + ' ';
  85.         Inc(NumWord);
  86.     Until J = Length(Text);
  87.  
  88.     Writeln(NewText);
  89.     Readln;
  90. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement