Страница 1 из 2

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

Добавлено: 03 янв 2007, 16:09
сНежная
Помогите решить задачку :)
Дана строка, начинается не пробелом, между словами по одному пробелу, заканчивается буквой. В строке переставить местами рядом стоящие слова (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.

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

Добавлено: 03 янв 2007, 16:31
Лелик_1044
Пишу сразу не проверял
Написана под дельфу

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

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

Добавлено: 03 янв 2007, 17:36
сНежная
Нет, не получается. Ставит пробел после первого символа и всё...

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

Добавлено: 03 янв 2007, 17:45
Лелик_1044
i:=pos(' ',s);
так точнее будет :)

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

Добавлено: 03 янв 2007, 17:48
сНежная
Теперь от второго слова первый символ отделяет и всё.....

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

Добавлено: 03 янв 2007, 17:49
сНежная
Мне надо чтобы слова менялись местами, а не строки :)

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

Добавлено: 03 янв 2007, 18:48
Лелик_1044
Я понимаю что не строки
Да и как при s:string ты поменяешь строки?

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

Добавлено: 03 янв 2007, 18:53
Лелик_1044
Ставь на форму 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;

Теперь проверил :)

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

Добавлено: 03 янв 2007, 18:53
Лелик_1044
И еще вопрос а если предложение будет состоять из 3 слов то что?

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

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