用户自定义类型2 学习笔记(集合)
unit Unit1;interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
Var
Char_Yuanyin: set of char;
Char1:Char;
i,j:Integer;
begin
Char_Yuanyin := [];
j := Length(Edit1.Text);
For i:=1 to j do
begin
Char1:= Edit1.Text;
If (Char1 = 'a') or (Char1 = 'A') then
Char_Yuanyin :=Char_Yuanyin + ;
If (Char1 = 'i') or (Char1 = 'I') then
Char_Yuanyin :=Char_Yuanyin + ;
If (Char1 = 'o') or (Char1 = 'O') then
Char_Yuanyin :=Char_Yuanyin + ;
If (Char1 = 'u') or (Char1 = 'U') then
Char_Yuanyin :=Char_Yuanyin + ;
If (Char1 = 'e') or (Char1 = 'E') then
Char_Yuanyin :=Char_Yuanyin + ;
end;
If Char_Yuanyin <> [] then
begin
ShowMessage('包含元音字母');
Edit2.Text := '';
For i:=1 to j do
Begin
Char1:= Edit1.Text;
If<=Char_Yuanyinthen
Edit2.Text :=Edit2.Text + ' ' + Char1;
end;
Edit2.Text := Trim(Edit2.Text);
end
else
Edit2.Text :='不包含元音字母';
end;
end. procedure TForm1.Button1Click(Sender: TObject);
Var
Char_Yuanyin: set of char;
Char1: Char;
i,j: Integer;
ResultStr: string;
begin
// 初始化修正:创建空集合并定义元音集合
Char_Yuanyin := ['A','E','I','O','U','a','e','i','o','u'];
ResultStr := '';
j := Length(Edit1.Text);
For i := 1 to j do
begin
Char1 := Edit1.Text;// 修正:获取第i个字符
// 更高效的判断方式:直接检查字符是否在集合中
if not (Char1 in Char_Yuanyin) then
ResultStr := ResultStr + Char1;// 拼接非元音字符
end;
// 判断修正:检查是否有元音被过滤(即结果字符串比原字符串短)
if Length(ResultStr) < j then
ShowMessage('包含元音字母')
else
ShowMessage('没有元音字母');
Edit2.Text := ResultStr;// 显示过滤后的字符串
end;
主要修正点说明:
[*]使用预定义的元音集合,提升代码效率
[*]修正字符获取方式:使用 Edit1.Text 获取单个字符
[*]使用 in 运算符判断集合成员关系
[*]通过字符串长度变化判断是否包含元音
[*]直接拼接非元音字符到结果字符串
优化后的程序逻辑:
1. 预定义所有大小写元音字母的集合
2. 遍历输入字符串的每个字符
3. 将非元音字符拼接成新字符串
4. 通过比较字符串长度差异判断是否包含元音
5. 显示过滤后的结果字符串
这个版本比原代码效率更高(时间复杂度从O(n^2)降到O(n)),且更符合Delphi集合类型的正确用法。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]