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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2009, 13:48   #1
Nubas
 
Регистрация: 12.10.2009
Сообщений: 9
По умолчанию Паскаль. Строки.

Такая задача:
Дана строка. Напечатать в алфавитном порядке все слова из данной строки, имеющие заданную длину.
Советы, код - приму все. Заранее спасибо.
Nubas вне форума Ответить с цитированием
Старый 25.10.2009, 14:40   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

совет.
порулите поиском - на форуме многократно были примеры кода, выделяющие слова из строки.
Полученные слова сразу проверяйте, длина совпадает с заданной длиной (if Length(CurWord) = ZadannayDlina then )
засовываем, например, в массив.
После окончания строки - сортируем массив.
Печатаем.
всё. задача решена.

p.s. для массива строк я бы рекомендовал по простому задать статический массив с размерностью заведомо больше, чем может быть слов.
Например так:
Words : array[1..200] of string[50];
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2009, 20:19   #3
Nubas
 
Регистрация: 12.10.2009
Сообщений: 9
По умолчанию

На сортировке слов в алфавитном порядке хотелось бы по подробней еще остановится.
Nubas вне форума Ответить с цитированием
Старый 25.10.2009, 20:57   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не вижу никаких проблем. Неужели поиск ничего не дал?!
Ладно.
вот код. (там два варианта сортировки (правда, и в том и другом случае это банальная сортировка "пузырьком"):
Код:
const n = 4;
var
  a: array[1..n] of string[50];
  TempRec: string[50];
  {t, x,} i, j, IndexMin, iCount: integer;
  min: integer;
  b: boolean;
begin
 a[1] := 'Пушкин';
 a[2] := 'Лермонтов';
 a[3] := 'Аверченко';
 a[4] := 'Булгаков';
 iCount := 4;

(*
  {Вариант 1}
   
  {сортировка}
  repeat b := true;

    for i := 1 to n-1 do
    begin
      if a[i] > a[i + 1] then
      begin
        y := a[i];
        a[i] := a[i + 1];
        a[i + 1] := y;
        b := false;
      end;
    end;
  until b;
*)  
  
  {Вариант 2}
  {сортировка массива A
    методом "пузырька"}

  {сортировка методом "пузырька" (методом простого выбора )

  Выбирается минимальный элемент массива
  и меняется местами с первым элементом массива.
  Затем процесс повторяется с оставшимися элементами и т. д. }

  for i:=1 to iCount-1 do begin
    IndexMin := i; {предварительно считаем, что первый элемент наименьший }
    {ищем индекс максимального элемента}
    for j:=i+1 to iCount do
      if A[j]<A[IndexMin] then IndexMin := j;

    {меняем местами элементы массива с индексами i и IndexMin
    (ну, если они не равны, конечно) }
    if i<>IndexMin then begin
      TempRec := A[IndexMin];
      A[IndexMin] := A[i];
      A[i] := TempRec;
    end;
  end;    
  
  
  {выводим отсортированный массив}
  writeln;
  writeln('Sortirovka :');
  for i := 1 to n do
    writeln(a[i]);
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.10.2009, 21:36   #5
Nubas
 
Регистрация: 12.10.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
if A[j]<A[IndexMin] then IndexMin := j;

[/CODE]
Аха... что-то я не подумал что паскаль знает алфавит.
Nubas вне форума Ответить с цитированием
Старый 25.10.2009, 22:40   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Аха... что-то я не подумал что паскаль знает алфавит.
он его и не знает...
просто кодовая таблица обычно составляется в алфавитном порядке... правда, есть и определённые проблемы, например, текст в кодировке DOS (она же OEM, она же 866), то буква Ё отсортируется после буквы Я (смотри кодовую таблицу), а в кодировке Windows (она же ANSI, она же 1251) буква Ё имеет код меньше чем коды всех остальных русских букв, поэтому буква будет после сортировки до буквы А...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
паскаль(( строки(( lumenка Паскаль, Turbo Pascal, PascalABC.NET 0 23.05.2009 17:53
Паскаль Строки! Серафимий Долговяз Помощь студентам 8 20.04.2009 16:08
Паскаль. Строки. b1otekk Помощь студентам 2 13.03.2009 10:46
паскаль строки Fornarina Помощь студентам 1 27.12.2008 01:31