Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2011, 15:35   #1
Pepsik
Пользователь
 
Регистрация: 10.07.2011
Сообщений: 15
По умолчанию работа со строками

задание такое : Вывести слова данной строки в обратном порядке по одному в строке экрана.

Код:
program l6;

function get_word(s: string; var i: byte): string;
var l: byte;
  w: string;
begin
  l := Length(s);
  while (i <= l) and (s[i] <= ' ') do
    inc(i);
  w := ' ';
  while (i <= l) and (s[i] > ' ') do
  begin
    w := w + s[i];
    inc(i);
  end;
  get_word := w;
end;

var i, l: byte;
  b, s: string;
begin
  writeln('enter');
  readln(s);
  l := Length(s);
  b := ' ';
  for i := 1 to l do
    b := get_word(b, i) + '' + b;
  while i < l do
    writeln(b);
  readln
end.
где-то в конце есть ошибка и задание не выполняется. помогите исправить.
должно выводить например так:
as 4fd s ->
s
4fd
as



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 11.07.2011 в 16:11.
Pepsik вне форума Ответить с цитированием
Старый 11.07.2011, 15:52   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что-то не понял ваш код.

Слова могут быть разделены только одним пробелом?
Если да, то я бы так делал:
Код:
readln(str);
bufstr:='';
for i:=length(str) downto 1 do
   if (str[i]=' ') or (i=1) then
   begin
     for j:=length(bufstr) downto 1 do
        write(bufstr[j]);
     bufstr:='';
     writeln;
   end
   else
      bufstr:=bufstr+str[i];
Если хотите, чтобы можно было разделять слова не только одним пробелом, то можно использовать "флаг" типа boolean, список разделителей (set of ...) и т.д.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 11.07.2011 в 15:57.
Alex11223 вне форума Ответить с цитированием
Старый 11.07.2011, 17:58   #3
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

А в голом паскале не существует функция Pos(); ?
На дельфяке я бы сделал так:

Код:
A:='sdfg sdf sdfsdfsd  sdf     sdf';
while Pos(' ',A)>0 do begin
x:=Copy(A,1,Pos(' ',A)-1));
if lenght(x)>0 then Memo.Lines.Add();
Delete(A,1,Pos(' ',A));
end;
Писал с коленки, наверное естьсинтаксис неправильный. Да и доработать можно существенно.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа со строками 3 Fuckoff Помощь студентам 0 18.04.2011 21:40
работа со строками(с++) Vitalka Помощь студентам 2 23.12.2010 20:18
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
работа со строками buba3230 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 02.06.2009 22:18
Работа со строками в С++ Sien Помощь студентам 3 09.01.2009 20:02