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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2010, 17:07   #1
delphinewerklin
 
Регистрация: 21.01.2010
Сообщений: 9
По умолчанию Проблема. не могу найти ошибку.

Программа сортировщик. Сортирует слова в Memo по алфавиту. Помогите пожалуйста найти ошибку.

Код:

Код:
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TMainForm = class(TForm)
    Memo: TMemo;
    But: TButton;
    Sortirovshik: TLabel;
    procedure MemoKeyPress(Sender: TObject; var Key: Char);
    procedure ButClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;
  s1,s2:string;
  i:integer;

implementation

{$R *.dfm}

procedure anagram(as1,as2:string);
var dls1,dls2,maxdls12,a:integer;
begin
dls1:=length(as1);dls2:=length(as2);
if dls1 = 0 then begin
ch1;
exit;
end else if dls2 = 0 then exit;
if dls1 < dls2 then maxdls12:=dls1
else maxdls12:=dls2;

// Цикл сравнивает посимвольно строки, при этом вызывая
// процедуру смены( ch1). Проведена работа и со сравниванием
// по длине строки.
for a:=1 to maxdls12 do
begin
if as1[a] < as2[a] then begin
ch1;exit; end else if as2[a] > as1[a] then exit;
if dls1 = maxdls12 then begin
ch1;exit; end else if dls2 = maxdls12 then exit;
end;

end;
procedure ch1;
begin
Memo.Lines[i]:=s2;
Memo.Lines[i+1]:=s1;
exit;
end;
procedure TMainForm.MemoKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
'а'..'я','А'..'Я':;
else Key:=chr(0);
end;
end;

//Событие по нажатию кнопки "Сортировать".Присваивает
//строковым переменным новые строки. Дальше проводит цикл
//сортировки с использованием сортирующей процедуры anagram.

procedure TMainForm.ButClick(Sender: TObject);
var z,mlcout:integer;
begin
mlcout:=Memo.Lines.Count;

if mlcout = 0 then
begin
ShowMessage('Введите список');
exit;
end;

for i:= 1 to mlcout do
 begin

   for z:= i to mlcout do
  s1:=Memo.Lines[z];
  s2:=Memo.Lines[z+1];
    
anagram(s1,s2);
 end;
end;

Последний раз редактировалось Stilet; 21.01.2010 в 17:14.
delphinewerklin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++. не могу найти ошибку world12_tk Помощь студентам 3 25.07.2009 10:47
Не могу найти ошибку Tesmont Помощь студентам 2 20.05.2009 21:00
Не могу найти ошибку. Picaso18 Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 17:05
Не могу найти ошибку . KVANTOM Общие вопросы Delphi 2 08.01.2009 17:15