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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2015, 14:11   #1
Nekala
Пользователь
 
Регистрация: 19.02.2011
Сообщений: 25
По умолчанию Нахождение цифрового слова

Добрый день. Задание такое:Сформировать новую строку, в которую включить только 4-символьные слова, с заменой "А" на "О". Найти первое цифровое слово и возвести его значение в куб

Написала код, работает, но немного не так. Он цифровое слово находит, если оно 4х символьное( Как сделать чтобы он находил первое цифровое слово из любого набора чисел
Код:
procedure TForm1.Button1Click(Sender: TObject);
var s,s1,s2:string;
    i,a,k:integer;
begin
s:=Memo1.Text;
s2:='';
while pos(' ',s)>0 do
 begin
  s1:=copy(s,1,pos(' ',s)-1);
  if length(s1)=4 then s2:=s2+s1+' ';
  delete(s,1,pos(' ',s));
 end;
if length(s)=4 then s2:=s2+s
else delete(s2,length(s2),1);
if s2='' then
 begin
  Memo1.Lines.Add(В строке нет 4-х символьных слов');
  exit
 end;
for i:=1 to length(s2) do
if s2[i] in ['A','a','А;','а'] then s2[i]:='O';
Memo1.Lines.Add('Замена буквы А на О');
Memo1.Lines.Add(s2);
s2:=' '+s2;
i:=2;
s1:='';
while(i<length(s2))and(s1='') do
if (s2[i] in ['0'..'9'])and(s2[i-1]=' ') then
 begin
  val(copy(s2,i,4),a,k);
  if k=0 then s1:=copy(s2,i,4)
  else i:=i+4;
 end
else i:=i+1; 
if s1='' then Memo1.Lines.Add('Числовых слов нет')
else Memo1.Lines.Add(Первое числовое слово='+s1+
                     ' его куб='+inttostr(a*a*a));
 
 
end;
end.

Последний раз редактировалось Nekala; 03.01.2015 в 14:14.
Nekala вне форума Ответить с цитированием
Старый 03.01.2015, 15:25   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Делфи? Опля.
Код:
with TStringList.Create do begin
 DelimitedText:=Memo1.Lines.Delimitedtext;
 for i:=Count-1 downto begin
  if Length(Strings[i])<>4 then Delete(i) else begin
   if TryStrToInt(n,Strings[i]) and ((n>999)and(n<10000)) then Strings[i]:=IntToStr(n*n) else
   Strings[i]:=StringReplace(Strings[i],'O','A',[rfreplaceall])
  end;
 end;
 Memo1.Lines.Text:=Text;
 free;
end;
Годится в качестве идеи?
I'm learning to live...

Последний раз редактировалось Stilet; 03.01.2015 в 15:27.
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение ключевых слова по тексту. Небесный PHP 4 20.10.2012 01:31
нахождение слова в строке saurons Общие вопросы C/C++ 7 01.06.2011 01:35
Нахождение слова в строке Bujhm127 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 08.04.2011 13:18
Файлы/Нахождение макс. слова на СИ Sultan237 Помощь студентам 4 08.03.2010 11:43
Нахождение самого короткого слова Диезушка Помощь студентам 2 20.10.2009 21:43