Advertisement
Glebyshka

RipLaba

Mar 13th, 2021
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.08 KB | None | 0 0
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. {$R *.res}
  6.  
  7. uses
  8.   System.SysUtils;
  9.  
  10.   var Stroka,word:string;
  11.   var i,g,j: Integer;
  12.   var probel,probelMax: Integer;
  13.   var choice:integer;
  14.   label again, NewStr, Execute;
  15.  
  16.   procedure Proc1(Str:string; const slovo:string);
  17.   var start,finish:integer;
  18.   var check:string;
  19.   var k,f:integer;
  20.   var symbol:char;
  21.   var probelcount:integer;
  22.   label skip;
  23.   begin
  24.       start:=1;
  25.       probelcount:=0;
  26.       Writeln('Результат первой процедуры следующий:');
  27.       for i := 1 to length(Str) do
  28.       begin
  29.             if Str[i]= ' ' then
  30.             begin
  31.                 k:=1;
  32.                 finish:=i-1;
  33.                 if probelcount = 0 then SetLength(check,finish);
  34.                 if probelcount <> 0 then SetLength(check,finish-start+1);
  35.  
  36.                 for g := start to finish do
  37.                 begin
  38.                     check[k]:=Str[g];
  39.                     inc(k);
  40.                 end;
  41.                 if check <> slovo then
  42.                 begin
  43.                      for k := 1 to Length(check)-1 do
  44.                      begin
  45.                          symbol:=check[k];
  46.                          for  f:= k+1 to length(check) do
  47.                          begin
  48.                              if symbol = check then  goto skip;
  49.                          end;
  50.                      end;
  51.                      Write(check,' ');
  52.                 end;
  53.             skip:
  54.             inc(probelcount);
  55.             start:=i+1;
  56.             end;
  57.       end;
  58.  
  59.  
  60.       Writeln;
  61.   end;
  62.  
  63.   procedure Proc2(Str:string; const slovo:string);
  64.   var start,finish:integer;
  65.   var check:string;
  66.   var k,f:integer;
  67.   var symbol:char;
  68.   var probelcount:integer;
  69.   label skip;
  70.   begin
  71.       start:=1;
  72.       probelcount:=0;
  73.       Writeln('Результат второй процедуры следующий:');
  74.       for i := 1 to length(Str) do
  75.       begin
  76.             if Str[i]= ' ' then
  77.             begin
  78.                 k:=1;
  79.                 finish:=i-1;
  80.                 if probelcount = 0 then SetLength(check,finish);
  81.                 if probelcount <> 0 then SetLength(check,finish-start+1);
  82.  
  83.                 for g := start to finish do
  84.                 begin
  85.                     check[k]:=Str[g];
  86.                     inc(k);
  87.                 end;
  88.                 if check <> slovo then
  89.                 begin
  90.                      for k := 1 to Length(check) do
  91.                      begin
  92.                          symbol:=check[k];
  93.                          if (symbol = 'а') or (symbol = 'у') or (symbol = 'о') or (symbol = 'ы') or (symbol = 'и') or (symbol = 'э') or (symbol = 'я') or (symbol = 'ю') or (symbol = 'ё') or (symbol = 'е') or (symbol = 'А') or (symbol = 'У') or (symbol = 'О') or (symbol = 'Ы') or (symbol = 'И') or (symbol = 'Э') or (symbol = 'Я') or (symbol = 'Ю') or (symbol = 'Ё') or (symbol = 'Е') then Write(symbol);
  94.                      end;
  95.                      Write(' ');
  96.                 end;
  97.             skip:
  98.             inc(probelcount);
  99.             start:=i+1;
  100.             end;
  101.       end;
  102.  
  103.  
  104.       Writeln;
  105.   end;
  106.  
  107. begin
  108.   NewStr:
  109.   Writeln('Введите строку, с которой будет работать программа:');
  110.   Readln(Stroka);
  111.  
  112.   probelMax:=0;
  113.   for i := 1 to length(Stroka) do
  114.   begin
  115.       if Stroka[i]=' ' then
  116.       begin
  117.           inc(probelMax);
  118.           if Stroka[i] = Stroka[i+1] then
  119.           begin
  120.               Writeln('Вы ввели неверную строку (2 и более пробелов подряд). Попробуйте ещё раз:');
  121.               goto NewStr;
  122.           end;
  123.  
  124.       end;
  125.   end;
  126.  
  127.   probel:=0;
  128.   g:=-1;
  129.   for i := 1 to length(Stroka) do
  130.   begin
  131.       if Stroka[i]=' ' then inc(probel);
  132.       if probelMax-probel=0 then inc(g);
  133.   end;
  134.  
  135.   SetLength(word,g);
  136.   probel:=0;
  137.   j:=1;
  138.   for i := 1 to length(Stroka)-1 do
  139.   begin
  140.       if Stroka[i]=' ' then inc(probel);
  141.       if ProbelMax-probel=0 then
  142.       begin
  143.           word[j]:=Stroka[i+1];
  144.           inc(j);
  145.       end;
  146.   end;
  147.  
  148.   again:
  149.   Writeln('Что вы хотите сделать с введённой вами строкой?');
  150.   Writeln('1 - Запустить первую процедуру (Напечатать слова, отличные от последнего слова, если в них нет повторяющихся букв).');
  151.   Writeln('2 - Запустить вторую процедуру (Напечатать слова, отличные от последнего слова, удаляя все согласные буквы).');
  152.   Writeln('3 - Ввести новую строку.');
  153.   Writeln('4 - Выйти из программы.');
  154.   Readln(choice);
  155.   if choice = 1 then
  156.   begin
  157.       Proc1(Stroka,word);
  158.       goto again;
  159.   end;
  160.   if choice = 2 then
  161.   begin
  162.       Proc2(Stroka,word);
  163.       goto again;
  164.   end;
  165.   if choice = 3 then goto NewStr;
  166.   if choice = 4 then goto Execute;
  167.  
  168.   Execute:
  169.   Writeln('Программа завершена!');
  170.   Readln;
  171.  
  172. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement