Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 17.05.2016, 19:23   #1 (permalink)
MaxCool
Новичок
 
Регистрация: 17.05.2016
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Строки. Pascal

1)С клавиатуры вводится строка символов. Заменить на ! символы между 1-ой и 2-ой точкой.
2)С клавиатуры вводится строка символов. Удалить из строки все слова чётной длины.
Когда изучали строки всё пропустил,помогите пожалуйста решить в паскале.
MaxCool вне форума   Ответить с цитированием

Старый 17.05.2016, 19:23
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Не обделяйте вниманием схожие с вашей темы

Задание по программированию в Pascal. Строки
Строки, Pascal. Нужна помощь

Старый 17.05.2016, 21:35   #2 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,298
Сказал(а) спасибо: 287
Поблагодарили 506 раз(а) в 164 сообщениях
Репутация: 91675
По умолчанию

Цитата:
Сообщение от 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.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 17.05.2016, 21:54   #3 (permalink)
Vladimir_S
Специалист
 
Аватар для Vladimir_S
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 26,298
Сказал(а) спасибо: 287
Поблагодарили 506 раз(а) в 164 сообщениях
Репутация: 91675
По умолчанию

Цитата:
Сообщение от MaxCool Посмотреть сообщение
2)С клавиатуры вводится строка символов. Удалить из строки все слова чётной длины.
Вариант 1. Без использования функции Delete.
Код:
Var
 W:Array[1..100] of String;
 S:String;
 i,j,N,L:byte;

Begin
 Writeln('Enter the string');
 Readln(S);
 L:=Length(S);
 Writeln;
 j:=1;
 i:=0;
 Repeat
  W[j]:='';
  repeat
   Inc(i);
  until S[i]<>' ';
  if i<L then
   begin
    while (S[i]<>' ') and (i<=L) do
     begin
      W[j]:=W[j]+S[i];
      Inc(i);
     end;
   end;
  if i<L then Inc(j);
 Until i>=L;
 N:=j;

 for j:=1 to N do
  if (Length(W[j]) mod 2)=1 then write(W[j]+' ');

 Readln
End.
Вариант 2. С использованием функции Delete.
Код:
Var
 S,W:String;
 i,k:byte;

Begin
 Writeln('Enter the string');
 Readln(S);
 Writeln;
 i:=0;
 Repeat
  W:='';
  repeat
   Inc(i);
  until S[i]<>' ';
  if i<Length(S) then
   begin
    k:=i;
    while (S[i]<>' ') and (i<=Length(S)) do
     begin
      W:=W+S[i];
      Inc(i);
     end;
    if (Length(W) mod 2)=0 then
     begin
      Delete(S,k,Length(W));
      Dec(i,Length(W));
     end;
   end;
 Until i>=Length(S);

 Writeln(S);

 Readln
End.
__________________
With Mozilla Firefox - straight to communism!
Vladimir_S вне форума   Ответить с цитированием
Старый 19.05.2016, 21:04   #4 (permalink)
MaxCool
Новичок
 
Регистрация: 17.05.2016
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Cпасибо огромное
MaxCool вне форума   Ответить с цитированием
Ads

Яндекс

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

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 18:09.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.