№1.
Расставить слова в каждом предложении в алфавитном порядке и одновременно рассортировать предложения по возрастанию количества слов в каждом.
ПРИМЕР:
дано: Жили, жили не тужили дед да бабка.(7 слова) Долго они жили и счастливо.(5 слов)
требуемый результат: Долго жили и они счастливо. Бабка да дед жили жили не тужили.(все слова в обоих предложениях в алфавитном порядке)
Общие указания при составлении программы:
1. Текст стандартного типа String ввести с клавиатуры.
2. Между словами могут быть различные разделители (пробел, запятая, точка и т.д.), которые необходимо задать во множестве.
3. Вывести исходный текст и текст после преобразования его по условию задачи.
№2.
Создать файл f1 из целых чисел. Создать новый файл f2, содержащий неубывающую последовательность файла f1 и включающий в себя минимальный элемент файла f1.
Общие указания при составлении программы:
В данной лабораторной работе необходимо сделать типизированный файл, где каждой компонентой будет число, массив или матрица. Количество компонент заранее не определено, поэтому, при обработке файла необходимо использовать либо булевское значение функции EOF (конец файла), либо значение функции FILESIZE (размер файла).
Сами значения каждой компоненты можно задавать генератором случайных чисел.
Вывод исходного файла и файла с результатами сделать процедурой (и, если файлы одного типа, то одной процедурой).
Посмотри прикрепленную тему про разбиения на слова в разделе Задачи.
Теперь у меня проблема. Я смог расставить слова по алфавиту во всем тексте, а мне надо расставить слова по алфавиту отдельно в каждом предложении.
Помогите мне осуществить данную цель, пожалуйста)))
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.
Ты сначала разбивай на предложения (точка, многоточие, восклицательный и вопросительный знаки - оставлять их в конце предложения и убирать пробелы по краям предложений), а потом - на слова (пробелы, запятые, точка с запятой, тире..) отдельно по каждому предложению.
Чувствуя себя тупым.))НО не могли бы вы мне по-подробней объяснить что именно надо сделать. ПО-больше бы комментариев чтоб я понял.....если вас конечно не затруднит. Подправил чуть код, т.к. он изобиловал кучей ошибок, хотя изменился он от этого не сильно.....)))
[/i]
может лудже всего будет следовать такому алгоритму
1 ищем позицию (pos) входа разделительного знака(пробела запятой)ж
2 копируем от начала до pos-1 в какуюту переменную (так мы виделим вхождение слова)ж
3 переносим переменную в массив
4 удаляем от начала до pos
5 удаляем пробел (вдруг у нас после слова стояла запятя) (в делфи есть процедура тримлефл если в паскале нету то могу написать)
етот цикл делаем до тех пор пока pos cтанет равно 0 (тоесть строка закончилась).
Теперь сортируем массив
и выводим его
PS если нужно отдель2 предложения то вставляем такой анализ если символ равен точке то начинаем новый массив и тогда сортируем 2 массива