IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите с перестаовкой букв в обратном порядке!
сообщение
Сообщение #1


Гость






Нужно написать прогу которая б переставляла букви каждого слова предложения в обратном порядке.Между словами находится один пропуск.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
Нужно написать прогу которая б переставляла букви каждого слова предложения в обратном порядке.Между словами находится один пропуск.

Сначала разбиваешь строчку на слова и заносишь их в массив(Разбиение на слова. Все способы.), потом для каждого елемента массива проделаешь procedure inverse и распечатаешь массив.
procedure inverse(var s:string);
var buf:string;
i:byte;
begin
buf:='';
for i:=length(s) downto 1 do
buf:=buf+s[i];
s:=buf;
end;


Сообщение отредактировано: volvo -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 1
Пол: Мужской
Реальное имя: Sasha

Репутация: -  0  +


Что то не виходит взял метод разбиения строки от Volvo тот что попроще пытаюсь совместить что то совсем не получается.Покажите как оно должно выглядеть в окончательном варианте.Заранее благодарен .
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


я бы на твоем месте использовал способ klem4'a -самый простой и ты поучаеш массив слов, то что
тебе и надо.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата(Sheremeta @ 17.06.2006 19:47)
Покажите как оно должно выглядеть в окончательном варианте.
А может лучше ты покажешь, КАК именно пытаешься совместить?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






uses CRT;
var I, J: integer;
S, S1, S2: string;
begin
ClrScr;
write('S=');
read(S);
S:=S+' ';
I:=1;
while I<=length(S) do
begin
if S[I]=' ' then
begin
S1:=Copy(S, 1, I);
delete(S, 1, I);
for J:=length(S1) downto 1 do
S2:=S2+S1[J];
I:=1;
S2:=S2+' ';
end;
I:=I+1;
end;
writeln(S2);
readkey;
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Выделяешь слово, а потом

n := length(s);
for i := 1 to n div 2 do begin
temp := s[i];
s[i] := s[n - i + 1];
s[n - i + 1] := temp;
end;
// где s - слово



обычная инверсия ...


Если не получается разбить строку на слова, смотри тут : Разбиение строки на слова, все способы

Сообщение отредактировано: volvo -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






в посте #6 рабочая программа
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Нет... Она модифицирует строку - добавляет разделитель, который не просили добавлять в условии. Так что рабочей программа не признается. Любой преподаватель сразу снизит оценку (я уж не говорю о работодателе...)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






какая разница, главное чтоб работала
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


Цитата
какая разница, главное чтоб работала

Она не будет работать, если ты ввидёшь строку длинной 255 символов.

Вот мой вариант:

type
main=array[1..40] of string[50];

procedure take_words(s:string; var mas:main; var n:integer);
var i:byte;
begin
n:=1;
for i:=1 to length(s) do
if (s[i]=' ') and (i<>length(s)) then
inc(n)
else
mas[n]:=mas[n]+s[i];
end;

procedure inverse(var s:string);
var buf:string;
i:byte;
begin
buf:='';
for i:=length(s) downto 1 do
buf:=buf+s[i];
s:=buf;
end;

var s:string; mas:main; n,i:integer;
begin
writeln('Enter string');
readln(s);
take_words(s,mas,n);
for i:=1 to n do
begin
inverse(mas[i]);
write(mas[i],' ');
end;
readln;
end.


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата
какая разница, главное чтоб работала


Это ты будешь объяснять кому-нибудь другому, ясно? А здесь, если уж взялся постить что-то то будь добр СНАЧАЛА прочесть пункт №7 Правил в рамочке, и выполнять его.

Когда ТЕБЕ нужна будет помощь, тебе почему-то (интересно, почему?) нужно будет ИДЕАЛЬНОЕ выполнение условий. Так вот и относись к другим так же.

Bokul, можно проще:
var
ch: char;
s: string;
start, finish, i: integer;

begin
write('s = '); readln(s);
start := 1;
while start <= length(s) do begin

while (start <= length(s)) and (s[start] = ' ') do inc(start);
finish := start;
while (finish <= length(s)) and (s[finish] <> ' ') do inc(finish);

for i := 1 to (finish - start) div 2 do begin
ch := s[start + i - 1];
s[start + i - 1] := s[finish - i];
s[finish - i] := ch;
end;
start := finish;

end;
writeln(s);
end.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Гость, твое бессмысленное сообщение и последовавший за ним флуд удален, еще раз повториться, будешь забанен по IP.

Сообщение отредактировано: klem4 -


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 




- Текстовая версия 21.08.2017 9:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"