Показать сообщение отдельно
Старый 17.05.2016, 21:35   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от MaxCool Посмотреть сообщение
1)С клавиатуры вводится строка символов. Заменить на ! символы между 1-ой и 2-ой точкой.
Вариант 1. Без использования операций Insert и Delete, но со вспомогательной строкой:
Код:
Var
 S,S1:String;
 i,k:Byte;

Begin
 Repeat
  k:=0;
  Writeln('Enter the string:');
  Readln(S);
  for i:=1 to Length(S) do
   if S[i]='.' then Inc(k);
  if k<2 then Writeln('The string must contain at least two "."');
 Until k>=2;
 S1:='';
 i:=0;
 Repeat
  Inc(i);
  if S[i]<>'.' then S1:=S1+S[i];
 Until S[i]='.';
 S1:=S1+'.';
 Repeat
  Inc(i);
  if S[i]<>'.' then S1:=S1+'!';
 Until S[i]='.';
 S1:=S1+'.';
 Repeat
  Inc(i);
  S1:=S1+S[i];
 Until i>=Length(S);
 Writeln(S1);
 Readln
End.
Вариант 2. Через функции Insert и Delete. Вспомогательная строка не требуется.
Код:
Var
 S:String;
 i,k,k1,k2:Byte;

Begin
 Repeat
  k:=0;
  Writeln('Enter the string:');
  Readln(S);
  for i:=1 to Length(S) do
   if S[i]='.' then Inc(k);
  if k<2 then Writeln('The string must contain at least two "."');
 Until k>=2;
 i:=0;
 Repeat
  Inc(i);
 Until S[i]='.';
 k1:=i;
 Repeat
  Inc(i);
 Until S[i]='.';
 k2:=i;
 Delete(S,k1+1,k2-k1-1);
 for i:=k1+1 to k2-1 do Insert('!',S,k1+1);
 Writeln(S);
 Readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070