PASCAL: текстовые задачи и файлы

Ответить
xxBOBAHxx
Сообщения: 8
Зарегистрирован: 19 окт 2008, 21:28

№1.
Расставить слова в каждом предложении в алфавитном порядке и одновременно рассортировать предложения по возрастанию количества слов в каждом.

ПРИМЕР:
дано: Жили, жили не тужили дед да бабка.(7 слова) Долго они жили и счастливо.(5 слов)
требуемый результат: Долго жили и они счастливо. Бабка да дед жили жили не тужили.(все слова в обоих предложениях в алфавитном порядке)

Общие указания при составлении программы:
1. Текст стандартного типа String ввести с клавиатуры.
2. Между словами могут быть различные разделители (пробел, запятая, точка и т.д.), которые необходимо задать во множестве.
3. Вывести исходный текст и текст после преобразования его по условию задачи.

№2.
Создать файл f1 из целых чисел. Создать новый файл f2, содержащий неубывающую последовательность файла f1 и включающий в себя минимальный элемент файла f1.

Общие указания при составлении программы:
В данной лабораторной работе необходимо сделать типизированный файл, где каждой компонентой будет число, массив или матрица. Количество компонент заранее не определено, поэтому, при обработке файла необходимо использовать либо булевское значение функции EOF (конец файла), либо значение функции FILESIZE (размер файла).
Сами значения каждой компоненты можно задавать генератором случайных чисел.
Вывод исходного файла и файла с результатами сделать процедурой (и, если файлы одного типа, то одной процедурой).
xxBOBAHxx
Сообщения: 8
Зарегистрирован: 19 окт 2008, 21:28

Теперь у меня проблема. Я смог расставить слова по алфавиту во всем тексте, а мне надо расставить слова по алфавиту отдельно в каждом предложении.
Помогите мне осуществить данную цель, пожалуйста)))
P.S. А рассортировать рассортировать предложения по возрастанию количества слов в каждом я попытаюсь сам)))

Код: Выделить всё

var t1, t2:string;
mn:set of char;
a:array[1..50] of string[25];
c:string[25];
kb, ksl, i, k, kp, e:byte;
p:boolean;
begin
  readln(t1); t1:=t1+'';
  mn:=['.', ' ', ','];
  kb:=0; ksl:=0;
  for i:=1 to length(t1)  do
  if not (t1[i] in mn) then inc (kb)
  else if kb>0 then
    begin
      inc(ksl);
      a[ksl]:=copy(t1, i-kb, kb);
      kb:=0;
    end;
  k:=ksl;
  inc(k);
  repeat
    p:=true; dec(k);
    for i:=1 to k do
      if length (a[i])>length (a[i+1]) then
        begin
          c:=a[i];
          a[i]:=a[i+1];
          a[i+1]:=c;
          p:=false;
        end;
      until p or (t1[i] in mn);
  t2:='';
  for i:=1 to ksl do
  t2:=t2+a[i]+' ';
  writeln('text v alfavitnom poradke', t2);
end.
Аватара пользователя
Turboworld
Сообщения: 29
Зарегистрирован: 27 дек 2007, 23:31
Контактная информация:

А чего тут сложного? Думаю, нужно сначала весь текст разбить на предложения. а потом отдельно с каждым работать - считать кол-во слов (чтобы потом сортировать по этим количествам сами предложения) и сортировать слова в предложении. Вот :)

Если необходима платная консультация - стучись в аську [см подпись] :)
Решаю задачки на Паскале. Практически любой сложности. Да, дорого. Но договориться всегда можно. Аська 337351594 ;)
Ответить