Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 681

/ вопрос открыт /

ЗДРАВСТВУЙТЕ! Помогите дописать программу по следующей задаче: Дана строка поменять местами первый и последний символ в каждом слове. Я написал только для одного слова строки , как сделать для каждого слова строки? Что нужно поменять? .....Заранее спасибо!

Приложение:
  1. program str;
  2. var
  3. s,s1,s2:string;
  4. l,n:integer;
  5. begin
  6. writeln('vvedite strocu');
  7. readln(s);
  8. n:=length(s);
  9. l:=1;
  10. while l<=n do
  11. if s[l]=' ' then
  12. begin
  13. s1:=copy(s,l-1,1);
  14. delete(s,l-1,1);
  15. insert(s1,s,1);
  16. s2:=copy(s,2,1);
  17. delete(s,2,1);
  18. insert(s2,s,l-1);
  19. l:=n+1
  20. end
  21. else
  22. l:=l+1
  23. writeln(s);
  24. readln;
  25. end.


Гогин Алексей Андреевич Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Гогин Алексей Андреевич (статус: Посетитель)
Вопрос отправлен: 13 июня 2008, 11:00
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: ANBsoft

Здравствуйте, Гогин Алексей Андреевич!
Примерно так.

Приложение:
  1. program str;
  2. var
  3. s:string;
  4. c:char;
  5. n,t:integer;
  6. begin
  7. writeln('vvedite strocu');
  8. readln(s);
  9. n:=1;
  10. t:=1;
  11. while t<=Length(s) do begin
  12. if (s[t]=' ') then begin
  13. if (t>n) then begin
  14. c:=s[t];
  15. s[t]:=s[n];
  16. s[n]:=c;
  17. end;
  18. n:=t+1;
  19. end;
  20. Inc(t);
  21. end;
  22. if t>n then begin
  23. c:=s[t];
  24. s[t]:=s[n];
  25. s[n]:=c;
  26. end;
  27. writeln(s);
  28. readln;
  29. end.


Ответ отправил: ANBsoft (статус: Студент)
Время отправки: 13 июня 2008, 17:33
Оценка за ответ: 1

Комментарий к оценке: Не получается
Выдает примерно такой результат
строка: tyu iop ert vbn
результат: yut opi rte bn

Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 18 июня 2008, 00:01; участников в обсуждении: 2.
ANBsoft

ANBsoft (статус: Студент), 14 июня 2008, 00:44 [#1]:

До чего же люди бывают ленивые и неблагодарные.
Я набросал пример на глаз - без проверки (не было под рукой Делфи чтобы проверить). А Вы вместо того чтобы понять как работает алгоритм (саму идею) и исправить ждете только готового, типа другие должны все разжевать и в рот положить.
Если уж Вы такой ленивый (или недостаточно сообразительный), приведу работающий код (сравните насколько он отличается от начального):
n:=1;
t:=1;
while t<=Length(s) do begin
if (s[t]=' ') then begin
if (t>n) then begin
c:=s[t-1];
s[t-1]:=s[n];
s[n]:=c;
end;
n:=t+1;
end;
Inc(t);
end;
if (t>n) then begin
c:=s[t-1];
s[t-1]:=s[n];
s[n]:=c;
end;
P.S. Спасибо за оценку (хотя зря я наверное распинаюсь - как в пословице про бисер :) ).
Гогин Алексей Андреевич

Гогин Алексей Андреевич (статус: Посетитель), 17 июня 2008, 23:37 [#2]:

Здраствуйте ,Бубырь Александр Николаевич! Все работает спасибо вам за код.Со своей стороны прошу извенить меня за столь строгую оценку вашего ответа в связи с моими недостаточными знаниями языка TURBO PASCAL. P.S Язык начал изучать 1,5 месяца назад.
ANBsoft

ANBsoft (статус: Студент), 18 июня 2008, 00:01 [#3]:

Здравствуйте.
Поняли свою ошибку, это уже радует, значит не зря старался.
Успехов в дальнейшем обучении. :)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 июня 2017, 16:40
Выполнено за 0.04 сек.
Рейтинг@Mail.ru