В строке переставить местами слова и вывести в одну строку

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

сНежная
Сообщения: 5
Зарегистрирован: 03 янв 2007, 16:00

Помогите решить задачку :)
Дана строка, начинается не пробелом, между словами по одному пробелу, заканчивается буквой. В строке переставить местами рядом стоящие слова (1 со 2, 3 с 4, и т.д.), строка с переставленными словами выводится на экран отдельно.

Я сделала вот так! Но, почему то не работает :(

program ctroca;
{$APPTYPE CONSOLE}
uses
SysUtils;
var s,s1:string;
s2:array[1..25]of string;
p,k,n,i,t:integer;
begin
writeln('Vvedite text');
readln(s);
k:=1;
n:=1;
p:=0;
s1:='';

for i:=1 to length(s) do
begin
if (s<>' ')and(s[i+1]=' ')
then inc(k);
end;

for i:=1 to length(s) do
begin
if (s<>' ')
then begin
insert(s,s1,n);
inc(n);
end;
if (s=' ') or (i=length(s))
then begin
n:=1;
inc(p);
s2[p]:=s1;
s1:='';
end
end;

writeln('Kol-vo slov: ',k);

readln;
end.
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

Пишу сразу не проверял
Написана под дельфу

var i: integer;
temp:string;
begin
i:=pos('',s)
temp:=copy(s,1,i+1);
delete(s,1,i+1);
temp:=temp+' ' +s;

Строки поменяются местами и будут соять в temp
Должно работьа для строки состоящих из двух слов
Для большей заноси в циклы while или until но не for
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
сНежная
Сообщения: 5
Зарегистрирован: 03 янв 2007, 16:00

Нет, не получается. Ставит пробел после первого символа и всё...
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

i:=pos(' ',s);
так точнее будет :)
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
сНежная
Сообщения: 5
Зарегистрирован: 03 янв 2007, 16:00

Теперь от второго слова первый символ отделяет и всё.....
сНежная
Сообщения: 5
Зарегистрирован: 03 янв 2007, 16:00

Мне надо чтобы слова менялись местами, а не строки :)
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

Я понимаю что не строки
Да и как при s:string ты поменяешь строки?
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

Ставь на форму edit и button в обработчик button пиши следующее

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
s,temp:string;
begin
s:=edit1.text;
i:=pos(' ',S);
temp:=copy(s,1,i-1);
delete(s,1,i);
temp:=s+' ' +temp;
edit1.texT:=temp;
end;

Теперь проверил :)
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

И еще вопрос а если предложение будет состоять из 3 слов то что?
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
сНежная
Сообщения: 5
Зарегистрирован: 03 янв 2007, 16:00

первое меняется со вторым, а третье без изменений. А можно на чистом Паскале, мы еще Делфи не изучали, и как сделать с циклом. прощу прощения за свои знания, я только месяц изучаю, но стараюсь :)
Ответить