Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2012, 18:56   #1
H4t
Пользователь
 
Регистрация: 14.11.2012
Сообщений: 31
По умолчанию Pascal. Преобразование строк.

Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Преобразовать каждое слово в строке, заменив в нем все последующие вхождения его первой буквы на символ «.» (точка).

Код:
Var
stroka,otvet:string; i,x:integer; sumbol:char;
Begin
 Write(' Введите строку ');
 Readln(stroka);
 x:=length(stroka);
 otvet:=stroka;
 for i:=1 to x do
  begin
   if (stroka[i]=' ') and (stroka[i+1]<>' ') then Sumbol:=Stroka[i+1];
   if stroka[i]=sumbol then otvet[i]:='.'
   else otvet[i]:=stroka[i];
  end;
 Writeln(otvet);
End.
Проблема в следующем: Первое слово не преобразовывается (по очевидным причинам, но исправить пока не выходит). Также заменяются на точки первые буквы в словах, хотя должны только последующие вхождения данной буквы.

Помогите пожалуйста исправить.
H4t вне форума Ответить с цитированием
Старый 14.11.2012, 19:42   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
по очевидным причинам, но исправить пока не выходит
Код:
stroka:=' '+stroka; // вставьте перед циклом
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 14.11.2012, 20:02   #3
H4t
Пользователь
 
Регистрация: 14.11.2012
Сообщений: 31
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Код:
stroka:=' '+stroka; // вставьте перед циклом
Спасибо, работает.
H4t вне форума Ответить с цитированием
Старый 14.11.2012, 20:04   #4
H4t
Пользователь
 
Регистрация: 14.11.2012
Сообщений: 31
По умолчанию

Цитата:
Сообщение от H4t Посмотреть сообщение
Заменяются на точки первые буквы в словах, хотя должны только последующие вхождения данной буквы.
Актуально
H4t вне форума Ответить с цитированием
Старый 14.11.2012, 20:22   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,431
По умолчанию

Код:
Var
  stroka, otvet: string;
  i, len: integer;
  c: char;

Begin
  Write('Input string ');
  Readln(stroka);
  otvet := stroka;
  len := length(stroka);
  i := 1;
  while i <= len do
  begin
    while (i <= len) and (stroka[i] = ' ') do
      inc(i);
    if i <= len then
      c := stroka[i];
    inc(i);
    while (i <= len) and (stroka[i] <> ' ') do
    begin
      if stroka[i] = c then
        otvet[i] := '.';
      inc(i);
    end;
  end;
  Writeln(otvet);
  Readln;
End.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 15.11.2012, 03:09   #6
H4t
Пользователь
 
Регистрация: 14.11.2012
Сообщений: 31
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Большое спасибо. Цикл однако сложноват оказался )
H4t вне форума Ответить с цитированием
Старый 15.11.2012, 10:59   #7
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
Сообщение другой вариант

Код:
function NewDotStr(const str: string): string;
var
  i, l: Integer;
  chr, nch: char;
begin
  Result := ' ' + str;
  l := Length(Result);

  nch := #0;
  for i := 2 to l do
  begin
    chr := Result[i];
    if Result[i-1] = ' '
      then nch := chr
      else if chr = nch
        then chr := '.';
    Result[i-1] := chr;
  end;
  SetLength(Result, l-1);
end;
***
в 'чистом' Pascal писать в Result нельзя, потребуется переменная otvet.
Берегите друг друга!

Последний раз редактировалось Virtson; 15.11.2012 в 11:01.
Virtson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
преобразование строк в си billie_jeann Помощь студентам 0 10.10.2012 23:37
Преобразование строк swillrocker Помощь студентам 7 25.05.2011 20:08
Преобразование строк tools Общие вопросы C/C++ 1 27.12.2010 14:55
преобразование строк imperceptible4462 Помощь студентам 14 07.09.2010 06:50
преобразование строк euhenia Помощь студентам 0 21.11.2009 20:19