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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2015, 23:08   #1
olenka.ke
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 16
По умолчанию Программа сортировки слов зацикливается! Помогите разобраться

Необходимо отсортировать слова во вводимой строчке буквой К. Моя программа работает для строки "В лесу родилась елочка". Если вводить, например, "В лесу родилась елочка в лесу она росла", то программа зацикливается. Попытки исправить это ни к чему не привели, помогите пожалуйста исправить ошибки
Код:
program dopolnitelnoe;
 label
 met;
 var
 st,m,max,min:string;
 i,k:integer;
{первая половина буквы К, нахожу максимальное слово,пишу его, удаляю его из строки, и ищу снова максимальное в новой строке}
 {-----------------------------------------------------------}
 procedure polovina1(m,st:string);
  begin
  repeat 
  k:=pos(' ',st);
  if k>0 then max:='' else max:=st;
  while k>0 do
  begin 
  if length(copy(st,1,k-1))>length(max)
  then max:=copy(st,1,k-1);
  delete(st,1,k);
  k:=pos(' ',st);
  end;
  if length(st)>length(max) then max:=st;
  writeln(max);
  delete(m,pos(max,m),length(max)+1);
  st:=m;
  until length(st)=0;
  end;
{вторая половина слова, аналогично с первой, только ищу минимальное}
 {-----------------------------------------------------------------------}
 procedure polovina2(m,st:string);
  begin
  repeat 
  k:=pos(' ',st);
  if k=length(m) then begin Writeln(m); exit end;
  min:=st;
  while k>0 do
  begin 
  if length(copy(st,1,k-1))<length(min)
  then min:=copy(st,1,k-1);
  delete(st,1,k);
  k:=pos(' ',st);
  end;
  if length(st)<length(min) then min:=st;
  writeln(min);
  delete(m,pos(min,m),length(min)+1);
  st:=m;
  until length(st)=0;
  Writeln(m);
  end;
 {-----------------------------------------------------------------------}
 begin
 writeln('Введите строку:');
 readln(st);
 Writeln('Отсортированная строка:');
 Writeln;
 m:=st;
 polovina1(m,st);
 polovina2(m,st);
 end.

Последний раз редактировалось Аватар; 28.10.2015 в 06:42.
olenka.ke вне форума Ответить с цитированием
Старый 28.10.2015, 09:31   #2
AleksandrH
Форумчанин
 
Аватар для AleksandrH
 
Регистрация: 15.02.2010
Сообщений: 148
По умолчанию

Цитата:
Сообщение от olenka.ke Посмотреть сообщение
Необходимо отсортировать слова во вводимой строчке буквой К.
Как ето?

А просто отсортировать не подходит?
Код:
uses crt;
type ar = array [1..50] of string;
var st,s1 : string;
    s,s11,s22 : ar;
    i,N,j : integer;

begin
clrscr;
writeln('Input Line');readln(st);
st := st + ' ';
s1 := '';
writeln('Slova:');
For i := 1 to Length(st) do
begin
     if st[i] <> ' ' then
        s1 := s1 + st[i]
     else
     begin
          N := N + 1;
          s[N] := s1;
          s1 := '';
          writeln(N,': ',s[N])
     end;
end;

writeln;
writeln('AZsort');
s11 := s;
   for i := 1 to n-1 do
   for j:=i to n do
     if s11[i] >s11[j] then
        begin
             s1 := s11[i];
             s11[i] := s11[j];
             s11[j] := s1
        end;
   for i := 1 to N do
     writeln(s11[i]);
   writeln('====');
writeln('ZAsort');
s11 := s;
   for i := 1 to n-1 do
   for j:=i to n do
     if s11[i] < s11[j] then
        begin
             s1 := s11[i];
             s11[i] := s11[j];
             s11[j] := s1
        end;
   for i := 1 to N do
     writeln(s11[i]);
   writeln('====');
readln;
end.
WIX-FILTERS. A Filter for every application.
AleksandrH вне форума Ответить с цитированием
Старый 28.10.2015, 10:09   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
отсортировать слова во вводимой строчке буквой К.
никак не могу сообразить, что такое сортировка "буквой К", объясните, пожалуйста.

Цитата:
первая половина буквы К
И что означает это?!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2015, 10:28   #4
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

о шибка у вас во второй процедуре
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 28.10.2015, 20:48   #5
olenka.ke
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 16
По умолчанию

вы ее запускать то пробовали? она не сортирует ничего. набор слов выдает.

сначала пишутся по порядку на каждой новой строке слова- от большего к меньшему, потом наоборот. и получается "буква К"

я знаю, что во второй, я не понимаю где конкретно.

Последний раз редактировалось Stilet; 28.10.2015 в 20:55.
olenka.ke вне форума Ответить с цитированием
Старый 28.10.2015, 21:04   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Какая хитрозная задачка
Код:
program Project1;

var s:string; a:array[1..100] of string;
  i,j,v,count:integer;
  q,w:array[1..100] of integer;
begin   {$o-}
 s:='В лесу родилась елочка в лесу она росла';
 count:=1;
 i:=1; while (i<=length(s)) do begin
   if s[i]=' ' then begin inc(count);inc(i);end;
   a[count]:=a[count]+s[i];
   inc(i);
 end;
 for i:=1 to count do begin q[i]:=i; w[i]:=i; end;
 for i:=1 to count do for j:=1 to count do begin
  if length(a[q[i]])<length(a[q[j]]) then begin v:=q[i]; q[i]:=q[j]; q[j]:=v; end;
  if length(a[w[i]])>length(a[w[j]]) then begin v:=w[i]; w[i]:=w[j]; w[j]:=v; end;
 end;
 for i:=1 to count do writeln(a[w[i]]);
 for i:=1 to count do writeln(a[q[i]]);

 readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
Я угадал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа, сортирующая исходный одномерный массив целых чисел методами пузырьковой сортировки и сортировки прямым выбором (язык С) igor01 Помощь студентам 7 16.05.2014 23:21
Зацикливается программа? Почему? ivt22 Общие вопросы Delphi 4 06.11.2013 11:44
Помогите разобраться что делает эта программа? (СИ) GroMkiY Помощь студентам 2 17.10.2013 10:31
программа зацикливается Юрий_91 Общие вопросы C/C++ 4 24.04.2010 16:23
Помогите разобраться в реализации поразрядной сортировки(код внутри) CooCkoo Помощь студентам 0 15.06.2009 23:52