Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Задача на сортировку!


Автор: rococo 11.4.2009, 20:48
Задание: написать программу, которая будет располагать слова в порядке убывания их длины в преложении. Автоматически делать букву заглавной после точки и добавлять пробел после точки, если его нет!

Автор: volvo877 11.4.2009, 23:44
Цитата(rococo @  11.4.2009,  20:48 Найти цитируемый пост)
Задание: написать программу, которая будет располагать слова в порядке убывания их длины в преложении
Прекрасно, и что? Что-то пробовал? Что-то не получается? Что именно? Код разбиения строки на слова покажи, где и как хранишь выделенные из строки слова - тоже неплохо было бы знать. Что такое слово в конце концов, чем слова могут отделяться друг от друга в предложении... Ты ж не написал ничего, просто выплеснул сюда задание в надежде подом зайти и скопировать выложенный тебе на блюдечке ответ, да? Ан РАЗБИЛОСЬ блюдечко. Нет больше решений без твоего участия...

Автор: rococo 12.4.2009, 11:05
Если б я знал как делать. Выложил для того чтобы кто нибудь сказал как делать, дал совет или помог с кодом.

Автор: rococo 16.4.2009, 22:22
Подскажи те с чего хоть начать!

Автор: BeKToP 17.4.2009, 07:58
Начни с изучения языка, а имено таких функций как copy,upcase,length,pos
а дальше берёш предложение, выделяеш из него первое слово, обрабатываеш, потом следующее итд.. smile 
а чтобы упорядочить по длинне, ну не зняю что бы проще было создай массив где то 100x2 и храни в нём номер слова и его длинну потом отсортируй и выведи..

ну это всё ,так, образно, ну уж извиняй какой вопрос такой ответ.... 

Автор: megabist 18.4.2009, 15:51
BeKToP, Проще сразу резать предложение на слова, и походу пихать в список, сортируя вставкой. после сортировки пробежаться, и если в конце слова встречаем точку, или вопросительный, восклицательный знак, у следующего слова вгоняем верхний регистр первую букву.

Автор: rococo 22.4.2009, 21:58
это код похожей программы, она делает тоже самое но по возрастанию....что нужно здеь исправить?

Код
uses crt;
var s,sub:string;
    i,j,n:integer;
    a:array[1..100] of string;
begin
clrscr;
writeln('Input str');
readln(s);
i:=0;n:=0;
repeat
inc(i);
if (s[i]=' ')and(s[i+1]<>' ') then begin
                   inc(n);
                   a[n]:=sub;
                   sub:='';
                   end
else if (s[i]<>' ')and(s[i]<>'.') then sub:=sub+s[i];
until i=length(s);
if sub<>'' then begin
inc(n);
a[n]:=sub;
end;
writeln;
for i:=2 to n do
 for j:=n downto i do
  if length(a[j])<length(a[j-1]) then
  begin
   sub:=a[j];
   a[j]:=a[j-1];
   a[j-1]:=sub;
  end;
for i:=1 to n do
writeln(a[i]);
end.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)