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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2016, 19:25   #1
SEXTANT
Пользователь
 
Регистрация: 10.11.2016
Сообщений: 27
По умолчанию [delphi]: Дана строка. Вывести каждое её слово с новой строки.

Дана строка. Все слова вывести на экран в столбец.
Пример: мама мыла руки
мама
мыла
руки
Помогите пожалуйста, не могу додуматься, как-то пытаюсь через copy, но не получается.

Последний раз редактировалось Вадим Мошев; 21.11.2016 в 21:11.
SEXTANT вне форума Ответить с цитированием
Старый 21.11.2016, 21:06   #2
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Код:
var
 s : string = 'мама мыла руки';
 i : integer;
begin
 for I := Low(s) to High(s) do
   if s[i] = ' ' then
    Writeln('')
   else
    Write(s[i]);
end
Artsiom вне форума Ответить с цитированием
Старый 21.11.2016, 21:10   #3
SEXTANT
Пользователь
 
Регистрация: 10.11.2016
Сообщений: 27
По умолчанию

Спасибо, конечно, но это pascal. Это я знаю, я вывод не знаю как сделать.
Вот что у меня получается.

SEXTANT вне форума Ответить с цитированием
Старый 21.11.2016, 21:12   #4
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Паскаль, Делфи, тот же i, только с боку)

А свой код покажешь?
Artsiom вне форума Ответить с цитированием
Старый 21.11.2016, 21:16   #5
SEXTANT
Пользователь
 
Регистрация: 10.11.2016
Сообщений: 27
По умолчанию

Тут просто вывод другой просто.
код выше
SEXTANT вне форума Ответить с цитированием
Старый 21.11.2016, 21:49   #6
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 s : string;
 i, lines : integer;
begin

s := Edit1.Text;
lines := 0;

 for i := Low(s) to High(s) do
   if (s[i] = ' ') or (s[i] = '.') then
   begin
    Memo1.Lines.Add('');
    inc(lines);
   end
   else
    Memo1.Lines[lines]:=Memo1.Lines[lines]+s[i];
end;
Но если прям нужно что-то с copy/del и циклом с предусловием, то:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 s, a : string;
begin

s := Edit1.Text;

while s[1]<>'.' do
  if (s[1] <> ' ') then
  begin
    a := a + copy(s, 1, 1);
    Delete(s, 1, 1);
    end
else
  begin
    Memo1.Lines.Add(a);
    a := '';
    Delete(s, 1, 1);
  end;
  Memo1.Lines.Add(a);

end;
Или так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 s, a : string;
 i : integer = 0;
begin

s := Edit1.Text;

while s[i]<>'.' do
  if (s[i] <> ' ') then
  begin
    inc(i);
  end
else
  begin
    Memo1.Lines.Add( copy(s, 1, i) );
    Delete(s, 1, i);
    i := 1;
  end;

  Memo1.Lines.Add(copy(s, 1, i-1));

end;

Последний раз редактировалось Artsiom; 21.11.2016 в 21:56.
Artsiom вне форума Ответить с цитированием
Старый 21.11.2016, 21:56   #7
SEXTANT
Пользователь
 
Регистрация: 10.11.2016
Сообщений: 27
По умолчанию

Оооой спасибо тебе большое, век не забуду.
SEXTANT вне форума Ответить с цитированием
Старый 21.11.2016, 22:03   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Только препод, наверное, скотина такая, захочет ввести строку
Цитата:
"______________мама________ мыла раму_______________"

_ = пробел
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.11.2016, 22:17   #9
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Ну, если он такооой бездушный человек, тогда я вгонюсь в краску на лице и мосг выдаст этот ужас:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  s, a: string;
begin

  s := Edit1.Text;
  a := '';

  while s[1] <> '.' do
  begin
    if (s[1] <> ' ') then
    begin
      a := a + copy(s, 1, 1);
      Delete(s, 1, 1);
    end
    else
    begin
      if a <> '' then
        Memo1.Lines.Add(a);
      Delete(s, 1, 1);
      a := '';
    end;

  end;

  Memo1.Lines.Add(a);

end;
Artsiom вне форума Ответить с цитированием
Старый 21.11.2016, 22:47   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Это же делфи
Код:
  s:='   мама    мыла раму  ';
  Memo1.Lines.Delimiter:=' ';
  Memo1.Lines.DelimitedText:=s;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача в Delphi zheka-safronov Помощь студентам 5 01.04.2012 15:39
задача по delphi 7 aleks155 Помощь студентам 3 20.10.2011 12:09
Задача по Delphi!!! Gegamus Помощь студентам 3 22.01.2011 23:58
Delphi Задача ДваДваВо7 Помощь студентам 4 28.10.2010 03:17
Задача в Delphi Kit_Kat Фриланс 3 16.05.2009 19:21