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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2008, 20:58   #1
xxBOBAHxx
 
Регистрация: 19.10.2008
Сообщений: 7
По умолчанию PASCAL: текстовые задачи и файлы

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

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

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

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

Общие указания при составлении программы:
В данной лабораторной работе необходимо сделать типизированный файл, где каждой компонентой будет число, массив или матрица. Количество компонент заранее не определено, поэтому, при обработке файла необходимо использовать либо булевское значение функции EOF (конец файла), либо значение функции FILESIZE (размер файла).
Сами значения каждой компоненты можно задавать генератором случайных чисел.
Вывод исходного файла и файла с результатами сделать процедурой (и, если файлы одного типа, то одной процедурой).
xxBOBAHxx вне форума Ответить с цитированием
Старый 08.12.2008, 18:45   #2
xxBOBAHxx
 
Регистрация: 19.10.2008
Сообщений: 7
По умолчанию

Теперь у меня проблема. Я смог расставить слова по алфавиту во всем тексте, а мне надо расставить слова по алфавиту отдельно в каждом предложении.
Помогите мне осуществить данную цель, пожалуйста)))
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.
xxBOBAHxx вне форума Ответить с цитированием
Старый 08.12.2008, 19:04   #3
alex_fcsm
Участник клуба
 
Аватар для alex_fcsm
 
Регистрация: 10.11.2008
Сообщений: 1,502
По умолчанию

Считывайте слова до точки - по предложению и отсортируйте считанные слова. ТО есть считали 1,2,3,4,5 слова - отсортировали(1 по 5). Считали 6,7,8,9,10,11 - отсортировали(с 6 по 11)

Можно было бы сделать
Код:
type Tpr=record
         s:array[1..20] od string[20];{слова предложения}
         ind:byte;{количество слов}
       end;
Код:
TText:array[1..100] of Tpr;
отсортировать полученный массив по ind, а затем его в каждом элементе элементы s
Нормальное состояние техники - нерабочее, все остальное частный случай.

Последний раз редактировалось alex_fcsm; 08.12.2008 в 19:08.
alex_fcsm вне форума Ответить с цитированием
Старый 08.12.2008, 21:03   #4
xxBOBAHxx
 
Регистрация: 19.10.2008
Сообщений: 7
По умолчанию

Записями пользоваться нельзя.....
Чувствуя себя тупым.))НО не могли бы вы мне по-подробней объяснить что именно надо сделать. ПО-больше бы комментариев чтоб я понял.....если вас конечно не затруднит. Подправил чуть код, т.к. он изобиловал кучей ошибок, хотя изменился он от этого не сильно.....)))

[/i]
Код:
var t1, t2:string;
mn, mn1:set of char;
a:array[1..50] of string[25];
c:string[25];
kb, kp, ksl, i, k:byte;
p:boolean;
begin
  readln(t1); t1:=t1+'';
  mn1:=['.', '!', '?'];
  mn:=[' ', ',', '-', ':', ';'];
  kp:=0;
  kb:=0; ksl:=0;
  for i:=1 to length(t1)  do
  if  (t1[i] in mn1) then inc (kp);  writeln('kol-vo pred =', kp);{считаю кол-во предложений}

  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;
  repeat{сортируем в алфавитном порядке}
    p:=true; dec(k);
    for i:=1 to k do
      if (a[i])>(a[i+1]) then {сравниваем сами слова}
        begin
          c:=a[i];
          a[i]:=a[i+1];
          a[i+1]:=c;
          p:=false;
        end;
      until p;
  t2:='';
  for i:=1 to ksl do
  t2:=t2+a[i]+' ';
  writeln('text v alfavitnom poradke   ', t2);
end.
xxBOBAHxx вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
текстовые файлы lusuj Помощь студентам 3 20.11.2008 19:18
Текстовые файлы на С Raptor Общие вопросы C/C++ 15 26.01.2008 21:06