• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Строки. Pascal

  • Автор темы Автор темы MaxCool
  • Дата начала Дата начала

MaxCool

Ученик
Регистрация
17 Май 2016
Сообщения
4
Реакции
0
Баллы
0
Строки. Pascal

1)С клавиатуры вводится строка символов. Заменить на ! символы между 1-ой и 2-ой точкой.
2)С клавиатуры вводится строка символов. Удалить из строки все слова чётной длины.
Когда изучали строки всё пропустил,помогите пожалуйста решить в паскале.
 
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.
 
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.
 
Cпасибо огромное
 
Назад
Сверху