数组中有123,186,890,159,878,999,,,
规定0和9是相连的,
1、求不相连的号,如186,025;
2、求2相连的号,如124,895,907;
3、求3相连的号,如012,890
设计一个函数如:
function leiInStrs(str1:string;strs:TStrings):boolean;
var
lei:String;
begin
if ((strtoint(str1[1]) mod 3)=(strtoint(str1[2]) mod 3)) and ((strtoint(str1[2]) mod 3)=(strtoint(str1[3]) mod 3)) then lei:='不连';
if ((strtoint(str1[1]) mod 3)=(strtoint(str1[2]) mod 3)) and ((strtoint(str1[2]) mod 3)=(strtoint(str1[3]) mod 3)) then lei:='二连';
if ((strtoint(str1[1]) mod 3)=(strtoint(str1[2]) mod 3)) and ((strtoint(str1[2]) mod 3)=(strtoint(str1[3]) mod 3)) then lei:='三连';
Result:=strs.IndexOf(lei)>=0;
end;
规定0和9是相连的,
1、求不相连的号,如186,025;
2、求2相连的号,如124,895,907;
3、求3相连的号,如012,890
设计一个函数如:
function leiInStrs(str1:string;strs:TStrings):boolean;
var
lei:String;
begin
if ((strtoint(str1[1]) mod 3)=(strtoint(str1[2]) mod 3)) and ((strtoint(str1[2]) mod 3)=(strtoint(str1[3]) mod 3)) then lei:='不连';
if ((strtoint(str1[1]) mod 3)=(strtoint(str1[2]) mod 3)) and ((strtoint(str1[2]) mod 3)=(strtoint(str1[3]) mod 3)) then lei:='二连';
if ((strtoint(str1[1]) mod 3)=(strtoint(str1[2]) mod 3)) and ((strtoint(str1[2]) mod 3)=(strtoint(str1[3]) mod 3)) then lei:='三连';
Result:=strs.IndexOf(lei)>=0;
end;
解决方案 »
- 请问如何将xls文件的int类型保存到 sql server表的int字段中?
- Delphi中何时应该显式调用对象的Free?
- 怎么取得DBCOMBOBOX的内容
- 一個三層系統
- 如何实现通过按钮触发把网上的SQL2000数据库中某一个已知的表,导入到本地的SQL2000数据库中?
- 在多層結構中數據為何保存或刪除出錯?謝了!
- 如何保存delphi.的文件
- 谢谢'鸟窝里的虫'我刚才描述有误!在delphi中使用query控件,在query控件中写sql语句怎样加通配符!
- 考考大家:如何随机从若干个数据中抽出指定个数据?//Kingron
- 在一台机器是否可调试DELPHI的如DCOM,CORBAR,MISDA之类的程序吗??
- update语句更新问题
- 关于自定义文件
var
iCnt:integer;
begin
iCnt:=Ord(StrToInt(str[2])-StrToInt(str[1])=1)+Ord(StrToInt(str[3])-StrToInt(str[2])=1);
if iCnt<>0 then
inc(iCnt);
Result:=iCnt;
end;procedure TForm1.Button3Click(Sender: TObject);
var
i:integer;
strs:TStringList;
str2:string;
begin
strs:=TStringList.Create;
strs.Add('128');
strs.Add('296');
strs.Add('123');
for i:=0 to strs.Count-1 do
Memo1.Lines.Add(strs.Strings[i]+','+IntToStr(StrLeiCnt(strs.Strings[i]))+'连号');
strs.Free;
end;
function StrLeiCnt(str:string):integer;
var
iCnt:integer;
begin
iCnt:=Ord(StrToInt(str[2])-StrToInt(str[1])=1)
+Ord(StrToInt(str[3])-StrToInt(str[2])=1)
+Ord((str[1]='9') and (str[2]='0'))
+Ord((str[2]='9') and (str[3]='0')); if iCnt<>0 then
inc(iCnt);
Result:=iCnt;
end;
procedure LeiStrsCustom(strIn:TStrings;strOut:TStrings;iType:integer);//0:不连,2:2号连,3:3号连
var
i:integer;
begin
strOut.Clear;
for i:=0 to strIn.Count-1 do
begin
if StrLeiCnt(strIn.Strings[i])=iType then
strOut.Add(strIn.Strings[i]);
end;
end;
//使用 LeiStrsCustom(strs,Memo1.Lines,3);
上面函数 StrLeiCnt没考虑9和0的问题,改下: Delphi(Pascal) code function StrLeiCnt(str:string):integer;
var
iCnt:integer;
begin
iCnt:=Ord(StrToInt(str[2])-StrToInt(str[1])=1)
+Ord(StrToInt(str[3])-StrToInt(str[2])=1)
+Ord((str[1]='9') and (str[2]='0'))
+Ord((str[2]='9') and (str[3]='0')); if iCnt <>0 then
inc(iCnt);
Res…
厉害,简单明了!我也明白了楼主的意思了。