Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Упорядочивание слов по алфавиту 
:(
    Опции темы
zipan89
Дата 25.12.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.12.2007

Репутация: нет
Всего: нет



Добрый вечер. Дана функция, которая должна упорядочивать при создании формы фамилии в файле bokok.txt по первой букве. Где то ошибка, сортируются неправильно. Подскажите пожалуйста где ошибка, и, если есть возможность дополните код чтобы фамилии сортировались по алфавиту( не по первой букве, а по алфавиту полностью) Мои готовии исходники стерли, и за неимением времени для восстановления прошу помощи тут. Место, где происходит само сравнение букв пометил комментарием.
Код

var
  Form1: TForm1;
  f,f2,f3,f4: TextFile;
  dan,dan2,dan3,dan4,d1,d2,d3,d4,str1,str2: string;
  danik,slv: boolean;
  i,ster,id2,id3,str:integer;
  mem1,mem2,mem3,mem4:array of String; 
procedure TForm1.MoyaFuncia;
begin
AssignFile(f,'book.txt');
Reset(f);
i:=0;
while not eof(f)=true do begin
readln(f,dan);
i:=i+1;
end;
CloseFile(f);
AssignFile(f,'book.txt');
AssignFile(f2,'book2.txt');
AssignFile(f3,'book3.txt');
AssignFile(f4,'book4.txt');
Reset(f);
Reset(f2);
Reset(f3);
Reset(f4);
Memo1.Clear;
Memo2.Clear;
Memo3.Clear;
Memo4.Clear;
SetLength(mem1,i);  // Ðàñïðåäåëåíèå ïàìÿòè
SetLength(mem2,i);  //        äëÿ
SetLength(mem3,i);  //      ìàññèâîâ
SetLength(mem4,i);  //
for str:=0 to i-1 do begin
readln(f,dan);
readln(f2,dan2);
readln(f3,dan3);
readln(f4,dan4);
mem1[str]:=dan;
mem2[str]:=dan2;
mem3[str]:=dan3;
mem4[str]:=dan4;
end;
CloseFile(f);
CloseFile(f2);
CloseFile(f3);
CloseFile(f4);
// Сортировка
for id2:=0 to i-1 do begin
for id3:=id2+1 to i-1 do begin
str1:=copy(mem1[id2],1,1);
str2:=copy(mem1[id3],1,1);
if str1>str2 then begin
d1:=mem1[id2];
d2:=mem2[id2];
d3:=mem3[id2];
d4:=mem4[id2];
mem1[id2]:=mem1[id3];
mem2[id2]:=mem2[id3];
mem3[id2]:=mem3[id3];
mem4[id2]:=mem4[id3];
mem1[id3]:=d1;
mem2[id3]:=d2;
mem3[id3]:=d3;
mem4[id3]:=d4;
slv:=True;
end;
end;
end;
AssignFile(f,'book.txt');
AssignFile(f2,'book2.txt');
AssignFile(f3,'book3.txt');
AssignFile(f4,'book4.txt');
Rewrite(f);
Rewrite(f2);
Rewrite(f3);
Rewrite(f4);
for id2:=0 to i-1 do begin
writeln(f,mem1[id2]);
writeln(f2,mem2[id2]);
writeln(f3,mem3[id2]);
writeln(f4,mem4[id2]);
end;
CloseFile(f);
CloseFile(f2);
CloseFile(f3);
CloseFile(f4);
AssignFile(f,'book.txt');
AssignFile(f2,'book2.txt');
AssignFile(f3,'book3.txt');
AssignFile(f4,'book4.txt');
Reset(f);
Reset(f2);
Reset(f3);
Reset(f4);
i:=1;
while not eof(f)=true do begin
readln(f,dan);
readln(f2,dan2);
readln(f3,dan3);
readln(f4,dan4);
Memo1.Lines.Add('#'+IntToStr(i)+' '+dan);
Memo2.Lines.Add(dan2);
Memo3.Lines.Add(dan3);
Memo4.Lines.Add(dan4);
i:=i+1;
end;
CloseFile(f);
CloseFile(f2);
CloseFile(f3);
CloseFile(f4);
end;


PM MAIL   Вверх
Exai1e
Дата 25.12.2007, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 908
Регистрация: 3.12.2006
Где: Moscow

Репутация: 2
Всего: 30



Пользуйся кнопкой код smile ;)


--------------------
"Решение зависит от выбранного геморроя" © Snowy
"у нас как в армии - либо работает, либо так и задумано"
PM MAIL ICQ   Вверх
Ofer
Дата 25.12.2007, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 293
Регистрация: 15.10.2006
Где: КривбаСС

Репутация: нет
Всего: 5




zipan89, вместо 

Цитата(zipan89 @  25.12.2007,  21:27 Найти цитируемый пост)
if str1>str2 then begin


используй StrComp и все будет отлично

PM MAIL ICQ   Вверх
Rimch
Дата 26.12.2007, 08:05 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 23.6.2007

Репутация: нет
Всего: 3



Вопрос, а не проще использовать ListBox или какой нибудь родитель этого класса, там уже готова сортировка и считывание из файла.
PM MAIL ICQ   Вверх
THandle
Дата 26.12.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 50
Всего: 372



Rimch, а зачем  ListBox? Тут как раз надо бы имхо, использовать TStringList.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0512 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.