Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.05.2011, 20:53
Dima170792 Dima170792 вне форума
Новичок
 
Регистрация: 02.04.2011
Сообщения: 61
Репутация: 10
По умолчанию строка слов, отделённых пробелом, в конце строки точка. поменять местами

Доброго времени сток Ув.форумчане!помогите пожалуста в решении задачи :Дана строка слов,отделённых пробелом,в конце строки точка.поменять местами два центральных слова,если их количество парное!Если можно приведите код программы на Delphi7
Ответить с цитированием
  #2  
Старый 05.05.2011, 21:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Как-то так:
Код:
function ReplaceCenterWords(S : String) : String;
var
  L : TStrinList;
  I : Integer;
begin
  Result := S;
  L := TStringList.Create;
  L.Text := StringReplace(S,' ',#13#10,[rfReplaceAll]);
  If L.Count mod 2 = 0 Then
    Begin
       L.Exchange((L.Count div 2)-1,(L.Count div 2));
       Result := StringReplace(L.Text,#13#10,' ',[rfReplaceAll]);
    End;
  L.Free;
end;
Код не проверял.

Последний раз редактировалось lmikle, 06.05.2011 в 02:23.
Ответить с цитированием
  #3  
Старый 05.05.2011, 23:06
Dima170792 Dima170792 вне форума
Новичок
 
Регистрация: 02.04.2011
Сообщения: 61
Репутация: 10
По умолчанию

Нашол 100% правильный,к томуже работающий вариант-одна проблема-не могу адаптировать под делфи7 пожалуста помогите!
Код:
program z6;
{  Дана строка слов разделенных пробелом ,в конце строки точка.
Поменять местами два центральных слова если их количество четно}
uses crt;
var a,b:string;i,j,l:longint;
    c:array[1..30]of string;
begin
  clrscr;
   write('введите текст: ');readln(a);
   b:='';j:=1;l:=length(a);
   if (a[l]<>'.')then begin
                       writeln(' ОШИБКА!!!');
                       write(' В конце должна стоять точка');
                       readln;halt;
		      end;
   for i:=1 to l do
   if (a[i]=' ')or(a[i]='.')then begin
				  c[j]:=b;b:='';inc(j);
			         end
			    else b:=b+a[i];j:=j-1;
   if j mod 2<>0 then
   beginwrite('количество слов нечетно');readln;halt;end;
    l:=j div 2;b:=c[l];c[l]:=c[l+1];c[l+1]:=b;
   for i:=1 to j do write(c[i],' ');
  readln;
 end.
Ответить с цитированием
  #4  
Старый 06.05.2011, 02:22
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А чем тебя мой вариант не устроил?

а адаптировать посто.
1. Выкидываешь uses crt;
2. В начало, после строки с program, вставляешь {$APPTYPE CONSOLE}
Ответить с цитированием
  #5  
Старый 07.05.2011, 20:09
Dima170792 Dima170792 вне форума
Новичок
 
Регистрация: 02.04.2011
Сообщения: 61
Репутация: 10
По умолчанию

Проблема в том,что мне нужно не консольное приложение а оконное!
Ответить с цитированием
  #6  
Старый 07.05.2011, 21:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Dima170792
Проблема в том,что мне нужно не консольное приложение а оконное!

я тебе дал функцию, которая принимает строку и возвращает готовый результат. А где ты ее применишь - уже твое дело.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:50.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025