18.11.2010, 23:06 | #1 (permalink) |
Member
Регистрация: 26.10.2010
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Вывести строку в алфавитном порядке. Delphi
|
18.11.2010, 23:06 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Наверняка тут вы найдете что то полезное, по этому дам вам ссылки на похожи темы Убираем лишнюю, вторую, строку при выборе операционной системы Как убрать вторую строку при выборе операционной системы? Напечатать в алфавитном порядке все глухие согласные буквы Вывести результат в Edit |
20.11.2010, 12:28 | #2 (permalink) |
Member
Регистрация: 26.10.2010
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
У меня получается вот такой код но: 1)он работает и с англ буквами хотя надо только с русскими 2)при выводе в memo остаётся то же число пробелов 3) при выводе в edit2 выводится только последняя буква(слово).помогите пожалуйста найти ошибки,а то я над этой задачей неделю бьюсь....
Код:
type Myset=set of char; var Form1: TForm1; implementation {$R *.dfm} function srav(str1,str2:string) :bool; var n,i:word; begin result:=false; if length(str1)<length(str2) then n:=length(str1) else n:=length(str2); for i:=1 to n do if ord(str1[i])<ord(str2[i]) then begin result:=true; break; end else if ord(str1[i])>ord(str2[i]) then break; end; procedure TForm1.Button1Click(Sender: TObject); var s,st,c: string; n,j,i:integer; Ruchar:Myset; arr:array of string; begin Ruchar:=['a'..'ÿ','A'..'ß','¸','¨',' ']; s:=Edit1.Text; i:=1; While (i<=length(s)) and (s[i] in Ruchar) do if s[i] in Ruchar then begin if s[i]<>' ' then st:=st+s[i] else begin if st<>'' then Memo1.Lines.Add(st); Memo1.Lines.Add(''); st:=''; end; i:=i+1; end else showmessage('not russian'); if st<>'' then Memo1.Lines.Add(st); n:=memo1.Lines.Count; setlength(arr,n); for i:=0 to n-1 do arr[i]:=memo1.Lines.Strings[i]; memo1.Clear; for i:=n-2 downto 0 do for j:=0 to i do if not srav(arr[j],arr[j+1]) then begin c:= arr[j]; arr[j]:= arr[j+1]; arr[j+1]:= c; end; for i:=0 to n-1 do Memo1.Lines.Add(arr[i]); for i := 0 to length(arr) - 1 do Edit2.Text:=arr[i]; |
20.11.2010, 18:58 | #3 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Это что, сейчас у студентов так в порядке вещей - кусок листинга выдернуть и на форум запостить? Какую помощь вы ожидаете, если в вашем коде ни начала, ни конца нет? Прикрепите ваш проект к следующему сообщению - будем разбираться, что к чему.
З.Ы. Первая команда в функции - возвратить значение "ложь", забавно, однако
__________________
Убить всех человеков! |
20.11.2010, 20:53 | #5 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Если никто не сделает раньше - в воскресенье ждите исправленный вариант. Раньше не смогу - у меня уже глубокая ночь.
__________________
Убить всех человеков! |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
22.11.2010, 21:14 | #8 (permalink) |
Member
Регистрация: 26.10.2010
Сообщений: 17
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
блин,что никто не может помочь?
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|