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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2010, 18:32   #1
Atoris
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 32
Восклицание Задача. Строки. Delphi консольная.

{ Ввести строку. Сформировать из неё новую строку из слов, в которых }
{ гласные буквы чередуются с согласными }
Atoris вне форума Ответить с цитированием
Старый 15.11.2010, 18:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Допустим.
Покажи с чего начал.
Ведь способов решить твою задачу много.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.11.2010, 19:26   #3
Atoris
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 32
По умолчанию

Код:
program Stroka;

{$APPTYPE CONSOLE}
{ Ввести строку. Сформировать из неё новую строку из слов, в которых }
{ гласные буквы чередуются с согласными. Удалить последнее слово     }             
uses
  SysUtils;

const
  Glas = ['a','e','i','o','u','y'];
  Sogl = ['a'..'z'] - Glas;

var
  S: String;         // Исходная строка
  NewS: String;      // Измененная строка
  I, J: Integer;     // Параметры циклов
  K, O: Integer;     // Служебные переменные

begin

  WriteLn('Введите строку: ');
  ReadLn(S);


  // Удаление двойного пробела
  while Pos('  ', S) <> 0  do
    Delete(S, Pos('  ', S), 1);

  // Удаление из строки последнего слова
  O := 0;
  S := Trim(S);
  for I := Length(S) downto 1 do
    if S[I] <> ' ' then
    begin
      Inc(O);
    end
    else
      break;
  O := Length(S) - O;
  Delete(S, O, Length(S));

  // Преобразование строки
  J := 1;
  K := 1;
  S := Trim(S);
  for I := 1 to Length(S) do


  // Вывод результата

  if Length(NewS) <> 0 then
  begin
    WriteLn('Измененная строка: ');
    WriteLn(NewS);
  end
  else
    WriteLn('Все слова в исходной строке совпадают с последним');
  ReadLn; ReadLn;
end.
From Stilet: У нас принято код для Си и Делфи оформлять тегом по кнопке #. прошу соблюдать правила уважая форумчан.


Ну вот... преобразование строки - и есть основная задача.
Я не могу разобраться с алгоритмом. А то , что я пробовал не работает. Прошу вашей помощи

Последний раз редактировалось Stilet; 15.11.2010 в 20:29.
Atoris вне форума Ответить с цитированием
Старый 15.11.2010, 20:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Шож так все сложно?
Вот тебе разбивка на слова:http://www.programmersforum.ru/showt...369#post398369

А вот тебе пример для функции выяснения подходит слово или нет:
Код:
 var s:string;i:integer;b:boolean;
begin
 s:='solovo';b:=true;
 i:=1;while(i<(length(s)-1))and(b) do begin
  if (
     (s[i] in ['a','e','y','u','i','o'])
  and
     (s[i+1] in ['a','e','y','u','i','o'])
   )
   or(
     (not (s[i] in ['a','e','y','u','i','o']))
   and
     (not (s[i+1] in ['a','e','y','u','i','o']))
   )
  then
   b:=false;
  inc(i);
 end;
 if b then write('ok') else write('no');
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Смекаешь что нужно делать?
Пройдись в цикле, разбей строку на слова, далее по каждому слову пройдись этим кодом чтоб выяснить подходит слово или нет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.11.2010, 09:44   #5
Atoris
Пользователь
 
Регистрация: 10.10.2010
Сообщений: 32
Радость

Цитата:
Сообщение от Stilet Посмотреть сообщение
Шож так все сложно?
Вот тебе разбивка на слова:http://www.programmersforum.ru/showt...369#post398369

А вот тебе пример для функции выяснения подходит слово или нет:
Код:
 var s:string;i:integer;b:boolean;
begin
 s:='solovo';b:=true;
 i:=1;while(i<(length(s)-1))and(b) do begin
  if (
     (s[i] in ['a','e','y','u','i','o'])
  and
     (s[i+1] in ['a','e','y','u','i','o'])
   )
   or(
     (not (s[i] in ['a','e','y','u','i','o']))
   and
     (not (s[i+1] in ['a','e','y','u','i','o']))
   )
  then
   b:=false;
  inc(i);
 end;
 if b then write('ok') else write('no');
 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Смекаешь что нужно делать?
Пройдись в цикле, разбей строку на слова, далее по каждому слову пройдись этим кодом чтоб выяснить подходит слово или нет.
Спасибо , получилась. Только в While в условии -1 не нужна иначе "last" проходит
Atoris вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки в Delphi. Ksushka93 Помощь студентам 9 06.11.2010 17:05
С#. Консольная менюшка. ZaVyLoN Общие вопросы .NET 4 02.11.2010 15:13
Консольная графика... Sota C++ Builder 3 01.04.2010 05:48
Консольная графика NoHeart Общие вопросы C/C++ 1 17.01.2010 20:25
Задача на Символы и строки в Delphi. ClassicV Помощь студентам 2 30.11.2009 11:40