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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2010, 17:46   #1
CodeExpert
Заблокирован
 
Регистрация: 30.10.2009
Сообщений: 468
Радость Разбор строки...

Добрый день уважаемые форумчане. У меня есть задание к лабе моей в институт, вообщем там вскрывается файл, далее считывается текст и производятся операции некоторые с текстом, ну это я и сам сделаю, есть одна вещь в них которая меня вводит в ступор. Не могу банально разобраться строку и проверить если есть в встречающемся слове цифры то взять его в скобки, собственно слово это часть строки ограниченная пробелами, к примеру:
я по5шел в2 магазин за пече3ньем
должно превратиться в :
я (по5шел) (в2) магазин за (пече3ньем)
уже раза три пробовал разными способами, ничего нормально не получается, поставьте пожалуйста на путь истинный...как это сделать?(
CodeExpert вне форума Ответить с цитированием
Старый 23.02.2010, 18:04   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Как вариант:
Код:
var
 s,o,t:string;
 i:integer;
 f:boolean;
begin
 readln(s);
 while length(s)<>0 do
 begin
  f:=false;
  if pos(' ',s)<>0 then
  begin
   t:=copy(s,1,pos(' ',s)-1);
   delete(s,1,pos(' ',s));
  end else
  begin
   t:=copy(s,1,length(s));
   delete(s,1,length(s));
  end;
  for i:=1 to length(t) do
   if t[i] in ['0'..'9'] then
   begin
    o:=o+'('+t+') ';
    f:=true;
    break;
   end;
   if not f then
   o:=o+t+' ';
 end;
  writeln(o);
  readln;
end.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 23.02.2010, 18:11   #3
CodeExpert
Заблокирован
 
Регистрация: 30.10.2009
Сообщений: 468
По умолчанию

Спасиб большое, а то мозг уже не соображает) П.с. С праздником всех)
CodeExpert вне форума Ответить с цитированием
Старый 23.02.2010, 18:16   #4
sorokin88
 
Регистрация: 23.02.2010
Сообщений: 3
По умолчанию

Как ещё один вариант

Код:
var
s,x: string;
wb,i:integer;
isnum:boolean;

begin
  readln(s);
  x:=s+' ';
  s:='';
  isnum:=false;
  wb:=1;
  for i:=1 to length(x) do begin
    if (x[i]=' ') then begin
      if (isnum) then s:=s+'('+copy(x,wb,i-wb)+')'
      else s:=s+copy(x,wb,i-wb);
      if (i<>length(x)) then s:=s+' ';
      isnum:=false;
      wb:=i+1;
    end;
    if (ord(x[i])>=$30) and (ord(x[i])<=$39) then isnum:=true;
  end;
  writeln(s);
end.
sorokin88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разбор строки на части Wi1D Общие вопросы C/C++ 7 27.12.2009 23:31
разбор текста kinogruppa Microsoft Office Excel 4 26.09.2009 23:42
Разбор строки GPS TIT0 Общие вопросы C/C++ 1 08.03.2009 18:44
разбор текста Teksa Помощь студентам 1 10.11.2008 20:14