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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2011, 00:01   #1
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию Алфавитная сортировка в строке

Снова я запутался со строками.
Условие: дана последовательность, где есть от 1 до 90 слов, в котором от 1 до 10 строчных русских букв. Разделитель - не меньше 1го пробела, за последним словом точка. Нужно напечатать эти слова по алфавиту.

Я хотел сделать, чтобы сортировка шла пузырьком по таблице, но у меня что-то не получается, помогите.
Код:
const m=90,
n=10;
var i,j:integer;
    c:char;
    a:array[1..m,1..n] of char;
b:boolen;
begin
for i:=1 to m do
 for j:=1 to n do
 a[i,j]:=' ';
  while c <> '.' do
  begin
   inc(i);
   read(c);
   while c = ' ' do read(c);
   while (c <> ' ') and (c <> '.') do
    begin
     a[i,j] := c;
     read(c);
     inc(j);
    end;
     repeat b:= true;
  for i:= 1 to n-1 do
    begin
      if a[i] > a[i + 1] then
      begin
        a[i]:= a[i + 1];
        b:= false;
      end;
    end;
  until b;
 begin
    for j:=j to n-1 do a[i,j]:=a[i,j+1];
    for j:=1 to n do write(a[i,j]);
    writeln;
   end;
 end;
readln;
end.
niktim вне форума Ответить с цитированием
Старый 07.12.2011, 01:10   #2
red-eye
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 14
По умолчанию

Извини, может туплю но у тебя же не всегда 90 слов, а может быть любое количество меньше 90?
red-eye вне форума Ответить с цитированием
Старый 07.12.2011, 09:32   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

и ещё. а почему не использовать тип string ? Или это запрещено условиями?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.12.2011, 16:44   #4
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию

Да, можно менее 90 слов.
Строковый тип можно использовать, но мне казалось, что незачем лишний раз занимать память, хотя, вполне вероятно, сделал только хуже.
niktim вне форума Ответить с цитированием
Старый 07.12.2011, 17:03   #5
red-eye
Пользователь
 
Регистрация: 07.12.2011
Сообщений: 14
По умолчанию

А счетчик до 90 , когда слов может быть меньше по твоему не ерунда? Сейчас что нить набросаю))
red-eye вне форума Ответить с цитированием
Старый 08.12.2011, 00:03   #6
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию

ПРоверка: Украинизм Тюркизм Латинизм Англицизм Арабизм Богемизм Галлицизм Гебраизм Семитизм Грецизм Итальянизм Литуанизм Мадьяризм Полонизм Семитизм Старославянизм Германизм Испанизм Церковнославянизм Ориентализм Русизм.

Код:
const
 max_words =90;
VAR
  S,temp:String;
  s_array:array[1..max_words] of String;
  count:Integer;
  i,j,len,beg_of_word:Integer;
BEGIN
 WriteLn('vvedi stroky:');
  ReadLn(s);
  i:=1;
  len:= length(s);
  count:= 0;
  while i < len do
  begin
    if s[i] <> ' 'then
    begin
      inc(count);
      beg_of_word := i;
      s_array[count] := '';
      while (s[i] <> ' ') and (i < len) do
      begin
        s_array[count] := s_array[count] + s[i];
        inc(i);
      end;
    end;
    inc(i);
  end;
  if count <> 0 then
  begin
   for i:=1 to count-1 do
     for j:=i+1 to count do
        if s_array[j] < s_array[i] then
        begin
          temp := s_array[j];
          s_array[j] := s_array[i];
          s_array[i] := temp
        end
  end;
  for i:=1 to count do
    Write(s_array[i],' ');
  WriteLn;
END.
Работает отлично, но можно как-нибудь оптимизировать и по-короче?

Последний раз редактировалось niktim; 08.12.2011 в 18:50.
niktim вне форума Ответить с цитированием
Старый 08.12.2011, 18:57   #7
niktim
Пользователь
 
Регистрация: 13.11.2011
Сообщений: 18
По умолчанию

Апну, коль не запрещено.
niktim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи: Сортировка символьной информации в строке, заданной пользователем.; Чтение и запись данных в файл (Assembler,TASM) User22 Помощь студентам 2 01.12.2011 11:40
сортировка в Pascal'е. отсортировать столбцы в матрице по невозрастанию в первой строке. Patrikstar666 Помощь студентам 0 15.11.2011 01:23
В целочисленной матрице NxM в каждой строке определить числа, которых нет в следующей строке (Паскаль) Sheffdmb2010 Паскаль, Turbo Pascal, PascalABC.NET 3 21.10.2011 08:33
Возможно русифицировать скрипт алфавитная навигация JQuery Necromnec JavaScript, Ajax 9 31.07.2010 15:13
паскаль,одномерный массив,сортировка вставка,сортировка убывания,от максимального до конца немозг Помощь студентам 11 06.02.2010 21:57