Guest User

Untitled

a guest
Aug 19th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.40 KB | None | 0 0
  1. Unit Lab9Unit;
  2.  {Avtor -Kashlev Y.A.,student group 201}
  3.  {Variant zadaniy - №4}
  4.  
  5. interface
  6.  
  7. uses {Подключе­ие библиотек с подпрогр мм ми и опис ­иями д ­­ых}
  8.   Crt; {Подключ ем систем­ый модуль П ск ля с подпрогр мм ми р боты с экр ­ом}
  9.  
  10. type {Объявле­ие ­ест ­д рт­ых типов д ­­ых}
  11.   tRazd = set of char; {М­ожество символов}
  12.  
  13. procedure SumWords;  
  14.  
  15. implementation
  16.  
  17. procedure SumWords;  
  18.  
  19. const
  20.   {Типизиров ­­ я ко­ст ­т  со м­ожеством символов-р зделителей слов}
  21.   Razd: tRazd = [' ','.', ',', '-', ';', ':', '!', '?'];
  22.  
  23. var
  24.   st,           {исход­ я сторок }
  25.   Slovo         {Строк  для ­ йде­­ого слов }: string; {Результирующ я строк }
  26.   Summ_c,Summ_nc,  {переме­­ые суммы чет­ых и ­ечет­ых чисел}
  27.   z,cod,
  28.   i,             {Номер символ  в строке}
  29.   N: integer;    {Количество символов в слове}
  30.  
  31. begin
  32.   TextColor(Red);
  33.   TextBackground(Brown);
  34.   ClrScr; {Очистк  экр ­ }
  35.  
  36.   writeln('Д ­­ я прогр мм  пред­ з­ че­  для вычисле­ия суммы чет­ых и ­ечет­ых слов в д ­­ой строке');
  37.   writeln;
  38.   repeat {Цикл ввод  исход­иков}
  39.     Writeln; {доб воч­ я строк  строки}
  40.     Write('Введите строку текст : ');
  41.     ReadLn(St);
  42.     slovo:='0';
  43.     summ_C:=0;
  44.   Summ_nc:=0;
  45.     if St = ''    {При вводе пустой строк  - последуетз верше­ие цикл }
  46.       then Break;
  47.  
  48.     while St <> '' do {Поиск слов в исход­ой строке текст }
  49.       begin
  50.  
  51.         {Уд ле­ие символов-р зделителей в ­ ч ле строки}
  52.         while (St <> '') and (St[1] in Razd) do
  53.           begin
  54.             Delete(St, 1, 1) {Уд ляем символ- р зделитель в ­ ч ле строки}
  55.           end;
  56.  
  57.         {Выделе­ие слов  в исход­ой строке}
  58.         {Н  случ й, если послед­ее слово в строке ­е з к ­чив ется р зделителем}
  59.         Slovo := St;
  60.         N:= Length(St);
  61.         for i := 1 to Length(St) do
  62.           if (St <> '') and (St[i] in Razd)
  63.              then
  64.                begin
  65.                  N := i-1;
  66.                  Slovo := Copy(St, 1, N);
  67.  
  68.                Break                end;
  69.  
  70.         if N = 0  {Если слово ­е выделе­о, выйти из цикл }
  71.           then Break;
  72.  
  73.         Delete(St, 1, N); {Уд ляем слово из исход­ой строки}
  74.  
  75.         {Если cлово ­е первое - доб вляем в ко­ец символ подчеркив ­ия}
  76.         val(slovo,z,cod);
  77.         if cod = 0
  78.           then if (z mod 2) = 0 then summ_c := summ_c+z
  79.                   else summ_nc := summ_nc + z;
  80.       end;
  81.  
  82.     {Печ ть результ тов}
  83.     WriteLn(#10#13'    Результ ты:');
  84.     WriteLn('сумм  чет­ых слов = ',summ_c);
  85.     Writeln('сум  ­е чет­ых слов = ',summ_nc);
  86.     ReadLn
  87.   until false; {"беско­еч­ый" цикл}
  88.  
  89. end;
Add Comment
Please, Sign In to add comment