Преобразовать строку, изменив порядок следования слов на обратный.
А каков алгоритм такого преобразования?
arhimag
6.01.2007 13:13
пункт 1. бьешь на массив слов и пробегаешь в обратном порядке. пункт 2 поиск
Lapp
6.01.2007 13:13
В цикле находишь следующее слово в строке s1 и вставляешь его в строку s2 на первую позицию (процедура Insert).
тема переезжаетв алгоритмы..
klem4
6.01.2007 14:02
Ну во первых наверняка тебе опять ничем нельзя пользоваться ? Pos, Delete, Insert ... Написать ты об этом забыла ?
18192123
6.01.2007 14:29
Цитата(klem4 @ 6.01.2007 14:02)
Ну во первых наверняка тебе опять ничем нельзя пользоваться ? Pos, Delete, Insert ... Написать ты об этом забыла ?
Прощу прощения, ты абсолютно прав.
Lapp
6.01.2007 14:30
Цитата(18192123 @ 6.01.2007 15:29)
Прощу прощения, ты абсолютно прав.
Ха. А чем можно?
arhimag
6.01.2007 14:31
А чем не устраивает мой способ с помощью массива?
volvo
6.01.2007 15:08
18192123, давай ты будешь определять задания ПОЛНОСТЬЮ, договорились?
Разделители между словами? Должен ли их порядок и количество сохраняться в строке - результате (arhimag, если ответ на предыдущий вопрос - "Да", то твой способ идет лесом)? Доступные средства для реализации... Почему надо все клещами вытягивать постоянно?
arhimag
6.01.2007 15: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 15:30
Цитата(volvo @ 6.01.2007 15:08)
18192123, давай ты будешь определять задания ПОЛНОСТЬЮ, договорились?
Разделители между словами? Должен ли их порядок и количество сохраняться в строке - результате (arhimag, если ответ на предыдущий вопрос - "Да", то твой способ идет лесом)? Доступные средства для реализации... Почему надо все клещами вытягивать постоянно?
Слова могут разделяться только пробелами. Их количество в строке результате не меняется, порядок следования символов в словах остаётся неизменным ( например, исходная строка acs dfr, результат dfr acs) Для строк использовать только length, chr, ord.
Lapp
6.01.2007 15:42
18192123 (и все уважаемые участники беседы), я несколько обескуражен. Мне кажется, начальное задание было поставлено довольно четко. Деталей не было, поскольку спрашивался алгоритм. В соответствии с этим я перенес тему в более подходящий раздел и описал агоритм в общих чертах (упоминание Insert'а было факультативным, в скобках). arhimag также привел свой вариант. Конкретная реализация могла быть различной.. Если требуются дальнейшие уточнения алгоритма - пожалуйста, тема к услугам всех. Что касается реализации - склонен считать флудом. Так что рекомендую 18192123 создать новую тему с правильным и полным условием на этот раз..
steet
17.02.2007 19:34
Не хочется создавать новую тему, но можно увидеть работающий код для этой задачи с использованием pos, insert, delete?
Благодарю всех за любую помощь.
мисс_граффити
17.02.2007 19:42
Безусловно, можно. Для этого (если Вас не затруднит) выполните несложный ряд действий: 1. Прочитайте, пожалуйста, то, что здесь уже написали. 2. Воспользуйтесь поиском или изучите прикрепленную в Задачах тему "Разбиение на слова". 3. Соберите все воедино и напишите работающий код для этой задачи (с использованием pos, insert, delete).
Надеюсь, что ни один из пунктов не противоречит Вашим принципам. Альтернативный путь: Создайте тему в Задачах на заказ.
-steet-
18.03.2007 16:19
Всем кому нужно:
program slova;
uses crt;
var
x,k,len : byte;
str,buf : string;
procedure PrintString(var buf : string ; var k : byte);
var
i : byte;
beginif k=1thenbeginwrite(' ');
buf:='';
endelsebegin
i:=k;
while i>=1dobeginwrite(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)=1then writeln(str);
while x>=1dobeginif (str[x]=' ') or (x=1) thenbeginif x=1thenelse k:=k-1;
PrintString(buf,k);
k:=1;
endelsebegin
buf[k]:=str[x];
if x=2then 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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.