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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2010, 23:30   #1
534
Пользователь
 
Регистрация: 20.02.2010
Сообщений: 23
По умолчанию упорядочение слов в предложении

Дано предложение. Изменить его так, чтобы вначале шли слова начинающиеся и закнчивающиеся одной и той же буквой, а затем остальные слова. В задаче использовать универсальную строку для представления в памяти текстовых данных) Consolе Application)
Не использовать массив, две строки, а написать через множетсво или еще как-то!!

Спасите девушку))

P.S. Уважаемые, в прошлой моей теме, я писала, что нужно написать прогу другим способом и вы ее закрыли. Мне нужно переделать код, не используя массива и второй строки, вот тот код
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  system, sysutils;

var
  s, st: string;
  i, j, k: integer;
  mas: array of string;
begin
  write('s = ');
  readln(s);
  s := s + ' ';
  i := pos(' ', s);
  setlength(mas, 1);
  k := 0;
  while i > 0 do begin
    mas[k] := copy(s, 1, pos(' ', s) - 1);
    delete(s, 1, pos(' ', s));
    inc(k);
    setlength(mas, k + 1);
    i := pos(' ', s)
  end;
  st := '';
  for i := 0 to k - 1 do
    if mas[i][1] = mas[i][length(mas[i])] then st := st + mas[i] + ' ';
  for i := 0 to k - 1 do
    if mas[i][1] <> mas[i][length(mas[i])] then st := st + mas[i] + ' ';
  write(st);
  readln;
end.
534 вне форума Ответить с цитированием
Старый 11.03.2010, 01:27   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Что-то знакомое...
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  system, strutils;

var
  s: string;
  i, j: integer;
begin
  write('s = ');
  readln(s);//каждое слово должно отделяться только одним пробелом
  s := s + ' ';

  i := 0;
  j := 1;
  i := strutils.PosEx(' ', s, i + 1);//ищем "второй" пробел (конец первого слова)
  while i > 0 do begin
    if s[i - 1] = s[j] then write(copy(s, j, i - j + 1));//j - начало слова; i-1 - конец слова; если концы совпадают, то выводим слово на экран
    j := i + 1;//перемещаем начало поиска
    i := PosEx(' ', s, i + 1)//ищем следующий пробел (конец следующего слова)
  end;

  i := 0;
  j := 1;
  i := strutils.PosEx(' ', s, i + 1);
  while i > 0 do begin
    if s[i - 1] <> s[j] then write(copy(s, j, i - j + 1));//то же самое при несовпадении концов
    j := i + 1;
    i := PosEx(' ', s, i + 1)
  end;

  readln;
end.
eoln вне форума Ответить с цитированием
Старый 11.03.2010, 12:47   #3
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

Цитата:
Спасите девушку)
а это ох как прокатывает )))
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В предложении подсчитать количество слов. Delphi King21 Помощь студентам 4 16.03.2011 14:26
Упорядочение массива STALKER888 Общие вопросы C/C++ 7 05.12.2009 21:29
Упорядочение одномерного массива. Arzamaks Помощь студентам 4 25.11.2009 09:46
Подсчет количества слов предложении Милашка000 Общие вопросы C/C++ 2 24.04.2009 20:02
Упорядочение элементов массива Юлёк PHP 2 28.01.2008 21:27