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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2010, 00:43   #1
Виталюкас
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 39
По умолчанию Строки

Помогите пожалуйста:
Разработать функцию FirstSpace(const S:string):integer,
определяющую позицию первого пробела в строке S.
С помощью данной функции вывести только такие строки
из введенного набора, у которых первый пробел находится после середины строки.

Последний раз редактировалось Stilet; 10.06.2010 в 08:41.
Виталюкас вне форума Ответить с цитированием
Старый 10.06.2010, 00:53   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ваши попытки решить?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.06.2010, 01:13   #3
Виталюкас
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 39
По умолчанию

Код:
function FirstSpace(const S:string):integer;
var i,len,sum:integer;
begin
  sum:=0;
  len:=length(s);
  for i:=1 to len do
      if IsDelimiter('',s,i) then sum:=sum+1;
  result:=sum;
end;



procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Add(Edit1.Text);
end;



procedure TForm1.Button2Click(Sender: TObject);
var x,i:integer;
begin
  for i:=0 to ListBox1.Items.Count-1 do
  begin
    x:=FirstSpace(ListBox1.Items[i]);
    ListBox2.Items.Add(ListBox1.Items[i]);
  end;
end;
Виталюкас вне форума Ответить с цитированием
Старый 10.06.2010, 01:14   #4
Виталюкас
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 39
По умолчанию

но здесь он выводит все строки, а мне надо хотябы те в которых есть пробел
Виталюкас вне форума Ответить с цитированием
Старый 10.06.2010, 01:22   #5
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

извините, а что означает функция IsDelimiter???
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 10.06.2010, 01:27   #6
Виталюкас
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Don Karleone Посмотреть сообщение
извините, а что означает функция IsDelimiter???
Функция IsDelimiter возвращает True, если символ, начинающийся с позиции байта Index в строке S, является одним из символов Delimiters. False возвращается, если символ не содержится в Delimiters, если Index находится вне границ строки или если символ в позиции Index является первым или вторым байтом многобайтового символа. Delimiters не может быть многобайтовой строкой, и нельзя использовать #0 в качестве одного из разделителей.
Виталюкас вне форума Ответить с цитированием
Старый 10.06.2010, 01:33   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
function FirstSpace(const S:string):integer;
var i,len:integer;
begin
 Result:=0;
 len:=length(s);
 for i:=1 to len do
  if s[i]=' ' then begin
                      Result:=i;
                      exit;
                     end;
end;
половина длины строки будет так Length(s) div 2

итог
Код:
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
 for i:=0 to ListBox1.Items.Count-1 do
  if (FirstSpace(ListBox1.Items[i])>(Length(ListBox1.Items[i]) div 2)) then ListBox2.Items.Add(ListBox1.Items[i]);
end;
и в личку писать не нужно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 10.06.2010 в 01:40.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.06.2010, 01:37   #8
Don Karleone
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 410
По умолчанию

Цитата:
Сообщение от Виталюкас Посмотреть сообщение
Помогите пожалуйста:
Код:
У вас сказано - разработать функцию FirstSpace(const S:string):integer, определяющую позицию первого пробела в строке S.
может надо сделать так:
Код:
function FirstSpace(const S: string): integer;
var 
  i,p: integer;
begin
  p:=0;
  for i:=1 to Length(s) do
     begin
        if s[i] = ' ' then p:=i;
        if p <> 0 then break;
     end;
  Result:=p;
end;
если функция вернет 0, то пробела в строке S нет. В противном случае она вернет позицию первого пробела в этой строке. Короче сделает тоже самое, что и функция Pos(' ',S);
ICQ: 593-013-807
Don Karleone вне форума Ответить с цитированием
Старый 10.06.2010, 01:41   #9
MadReason
Ищу работу
Форумчанин
 
Аватар для MadReason
 
Регистрация: 16.02.2007
Сообщений: 269
По умолчанию

Код:
function FirstSpace(const S:string):integer;
var i,len,sum:integer;
begin
  result:=pos(' ',s);
end;

procedure TForm1.Button1Click(Sender: TObject);
var x,i:integer;
begin
ListBox1.Clear;
  for i:=0 to Memo1.Lines.Count-1 do
  begin
    x:=FirstSpace(Memo1.Lines.Strings[i]);
    if x>((Length(Memo1.Lines.Strings[i])+1)div 2) then
    ListBox1.Items.Add(Memo1.Lines.Strings[i]);
  end;
end;
c тебя пиво)
Пишу на Delphi все что угодно, недорого, красиво, с комментариями
###icq 107335###
MadReason вне форума Ответить с цитированием
Старый 10.06.2010, 03:20   #10
Виталюкас
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 39
По умолчанию

всем ОГРОМНОЕ СПАСИБО
Виталюкас вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определять максимальную длину той части строки s, которая не содержит символы из строки s1. Александе еть я Общие вопросы C/C++ 5 13.04.2010 20:54
Удаление элементов строки s2 из строки s1 Ueshua Общие вопросы C/C++ 4 20.12.2009 13:06
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Строки. Как вывести часть строки? Anfall Общие вопросы Delphi 7 26.02.2009 09:10
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27