Преобразовать строку, изменив порядок следования слов на обратный.
А каков алгоритм такого преобразования?
arhimag
6.01.2007 17:13
пункт 1. бьешь на массив слов и пробегаешь в обратном порядке. пункт 2 поиск
Lapp
6.01.2007 17:13
В цикле находишь следующее слово в строке s1 и вставляешь его в строку s2 на первую позицию (процедура Insert).
тема переезжаетв алгоритмы..
klem4
6.01.2007 18:02
Ну во первых наверняка тебе опять ничем нельзя пользоваться ? Pos, Delete, Insert ... Написать ты об этом забыла ?
18192123
6.01.2007 18:29
Цитата(klem4 @ 6.01.2007 14:02)
Ну во первых наверняка тебе опять ничем нельзя пользоваться ? Pos, Delete, Insert ... Написать ты об этом забыла ?
Прощу прощения, ты абсолютно прав.
Lapp
6.01.2007 18:30
Цитата(18192123 @ 6.01.2007 15:29)
Прощу прощения, ты абсолютно прав.
Ха. А чем можно?
arhimag
6.01.2007 18:31
А чем не устраивает мой способ с помощью массива?
volvo
6.01.2007 19:08
18192123, давай ты будешь определять задания ПОЛНОСТЬЮ, договорились?
Разделители между словами? Должен ли их порядок и количество сохраняться в строке - результате (arhimag, если ответ на предыдущий вопрос - "Да", то твой способ идет лесом)? Доступные средства для реализации... Почему надо все клещами вытягивать постоянно?
arhimag
6.01.2007 19:22
делая аналогию с предыдущими заданиями 18192123, то разделитель - только пробел. вывод сделан из
Цитата
у меня получилось разбить на слова первую строку, больше ничего не могу сделать... не пойму, как сравнить со второй...( даже с использованием функции function _Pos(const subS, s: String): Integer)
Код
Function slovo ( const s : string; var i : byte) : string; var w : string; begin w := ''; while ( i <= length (s) ) and ( s[i] <> ' ' ) do begin w := w + s[i]; i := i+1; end; slovo := w; end;
18192123
6.01.2007 19:30
Цитата(volvo @ 6.01.2007 15:08)
18192123, давай ты будешь определять задания ПОЛНОСТЬЮ, договорились?
Разделители между словами? Должен ли их порядок и количество сохраняться в строке - результате (arhimag, если ответ на предыдущий вопрос - "Да", то твой способ идет лесом)? Доступные средства для реализации... Почему надо все клещами вытягивать постоянно?
Слова могут разделяться только пробелами. Их количество в строке результате не меняется, порядок следования символов в словах остаётся неизменным ( например, исходная строка acs dfr, результат dfr acs) Для строк использовать только length, chr, ord.
Lapp
6.01.2007 19:42
18192123 (и все уважаемые участники беседы), я несколько обескуражен. Мне кажется, начальное задание было поставлено довольно четко. Деталей не было, поскольку спрашивался алгоритм. В соответствии с этим я перенес тему в более подходящий раздел и описал агоритм в общих чертах (упоминание Insert'а было факультативным, в скобках). arhimag также привел свой вариант. Конкретная реализация могла быть различной.. Если требуются дальнейшие уточнения алгоритма - пожалуйста, тема к услугам всех. Что касается реализации - склонен считать флудом. Так что рекомендую 18192123 создать новую тему с правильным и полным условием на этот раз..
steet
17.02.2007 23:34
Не хочется создавать новую тему, но можно увидеть работающий код для этой задачи с использованием pos, insert, delete?
Благодарю всех за любую помощь.
мисс_граффити
17.02.2007 23:42
Безусловно, можно. Для этого (если Вас не затруднит) выполните несложный ряд действий: 1. Прочитайте, пожалуйста, то, что здесь уже написали. 2. Воспользуйтесь поиском или изучите прикрепленную в Задачах тему "Разбиение на слова". 3. Соберите все воедино и напишите работающий код для этой задачи (с использованием pos, insert, delete).
Надеюсь, что ни один из пунктов не противоречит Вашим принципам. Альтернативный путь: Создайте тему в Задачах на заказ.
-steet-
18.03.2007 20:19
Всем кому нужно:
program slova; uses crt; var x,k,len : byte; str,buf : string; procedure PrintString(var buf : string ; var k : byte); var i : byte; begin if k=1 then begin write(' '); buf:=''; end else begin i:=k; while i>=1 do begin write(buf[i]); i:=i-1; end; write(' '); buf:=''; end; end; begin clrscr; writeln('Vvedite slova:'); readln(str); writeln; writeln('Resultat:'); k := 1; x := length(str); if length(str)=1 then writeln(str); while x>=1 do begin if (str[x]=' ') or (x=1) then begin if x=1 then else k:=k-1; PrintString(buf,k); k:=1; end else begin buf[k]:=str[x]; if x=2 then buf[k+1]:=str[x-1]; k:=k+1; end; x:=x-1; end; writeln;writeln; write('Press any key to quit...'); readkey; end.
М
Теги, господа, теги!! Это требование правил! И здравого смысла.. Lapp
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.