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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 20:46   #1
Nastroenie_
 
Регистрация: 25.03.2009
Сообщений: 9
По умолчанию Помогите пожалуйста с лабораторной на Delphi

Дана строка символов. В строке имеется несколько символов ‘.’. Выделить подстроку между первой и последней точкой.
строку считывать с файла.
Nastroenie_ вне форума Ответить с цитированием
Старый 25.03.2009, 20:53   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ищете первую точку. Запоминаете позицию.
Ищете вторую точку. Запоминаете позицию (в другую переменную).
Далее ищете все остальные точки. Если точек больше нет, то выделаете подстроку между первой (которую запомнили сначала) и последней (та, которую запомнили перед тем, как точки кончились).

Для поиска достаточно посимвольно пройтись по файлу.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.03.2009, 21:06   #3
Nastroenie_
 
Регистрация: 25.03.2009
Сообщений: 9
По умолчанию

благодарю, сейчас попробую реализовать
Nastroenie_ вне форума Ответить с цитированием
Старый 25.03.2009, 21:11   #4
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 s:string;
 i,f:integer;
begin
 s:=Edit1.Text;
 f:=0;
 for i:=1 to length(s)do
   begin
     if s[i]='.' then f:=1;
     if f=1 then
     begin
       if (s[i+1]='.') then break;
       Edit2.Text:=edit2.Text+s[i+1];
     end;
   end;
 f:=0;
end;
Arkuz вне форума Ответить с цитированием
Старый 25.03.2009, 21:42   #5
Nastroenie_
 
Регистрация: 25.03.2009
Сообщений: 9
По умолчанию

спасибо большое очень выручил
Nastroenie_ вне форума Ответить с цитированием
Старый 25.03.2009, 21:44   #6
Nastroenie_
 
Регистрация: 25.03.2009
Сообщений: 9
По умолчанию

а может f лучше булевского типа сделать
Nastroenie_ вне форума Ответить с цитированием
Старый 25.03.2009, 21:55   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Arkuz, ваш код выделяет подстроку от первой до второй точки. А надо до последней.

Мой вариант.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 s,sub:string;
 i:integer;
 f : boolean;
begin
 s:=Edit1.Text;
 f:=false;
 sub := '';
 for i:=1 to length(s) do
  begin
  if s[i] = '.' then
   begin
   if not f then
    begin
    f := true;
    continue;
    end
   else
    begin
    Edit2.Text := Edit2.Text + sub;
    sub := '';
    end;
   end;
  if not f then continue;
  sub := sub + s[i];
  end;

end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.03.2009, 21:56   #8
Nastroenie_
 
Регистрация: 25.03.2009
Сообщений: 9
По умолчанию

и выделение строки происходит не между первой и последней точкой, а между первой и второй
Nastroenie_ вне форума Ответить с цитированием
Старый 25.03.2009, 21:57   #9
Nastroenie_
 
Регистрация: 25.03.2009
Сообщений: 9
По умолчанию

благодарю Вас Sazary, все верно
Nastroenie_ вне форума Ответить с цитированием
Старый 25.03.2009, 22:07   #10
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

Цитата:
Сообщение от Nastroenie_ Посмотреть сообщение
а может f лучше булевского типа сделать
Разницы не вижу... Но если только в целях экономии памяти за счёт типа данных...
Arkuz вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку в лабораторной NeWeDim4ik Помощь студентам 4 24.01.2009 03:24
Помогите пожалуйста в Delphi. carbon383 Помощь студентам 0 03.06.2008 02:30
можете помочь с выполнением лабораторной? Kristy Общие вопросы по Java, Java SE, Kotlin 0 15.05.2008 20:46
ЗАДАНИЯ К ЛАБОРАТОРНОЙ РАБОТЕ №1 “СТРУКТУРА СЛЕДОВАНИЕ” Mifolog Помощь студентам 5 01.10.2007 12:23
Нужна помощь в написание лабораторной viktorchik Помощь студентам 1 10.03.2007 01:28