我需要一些Turbo Pascal问题的帮助:
如果N1的每个数字在N2中出现至少一次,反之亦然,则认为两个整数是兄弟。 示例:如果N1 = 1164且N2 = 614,程序将显示N1和N2为兄弟,如果N1 = 504且N2 = 455,程序将显示N1,N2不是兄弟
我的问题是:如何检查2个整数是不是兄弟? 这是我的工作:
function brother(n1, n2: integer): boolean; var test: boolean; ch1, ch2: string; begin chr(n1, ch1); chr(n2, ch2); i := 0; repeat j := 0; i := i + 1; test := false; repeat j := j + 1; if ch1[i] = ch2[j] then test := true; until (test = true) or (j = length(ch2)); until (test = false) or (i = length(ch1)); brother := test; end;当我运行它时,它总是打印(“整数是兄弟”),即使我把504和455,我想知道错误在哪里。
I need some help in this Turbo Pascal problem:
Two integers are said to be brothers if each digit of N1 appears at least once in N2 and vice versa. Examples: if N1 = 1164 and N2 = 614 the program will display N1 and N2 are brothers, if N1 = 504 and N2 = 455 the program will display N1 and N2 are not brothers
My question is: How to check whether the 2 integers are brothers or not? This is my work:
function brother(n1, n2: integer): boolean; var test: boolean; ch1, ch2: string; begin chr(n1, ch1); chr(n2, ch2); i := 0; repeat j := 0; i := i + 1; test := false; repeat j := j + 1; if ch1[i] = ch2[j] then test := true; until (test = true) or (j = length(ch2)); until (test = false) or (i = length(ch1)); brother := test; end;when I run this, it always print ("integers are brothers") even when I put 504 and 455, I want to know where the mistake is.
最满意答案
尝试这样的事情:
function contains(s: string; ch: char): boolean; var i: integer; begin contains := false; for i := 1 to length(s) do if s[i] = ch then contains := true; end; function brother(n1, n2: integer): boolean; var test: boolean; ch1, ch2: string; i: integer; begin str(n1, ch1); str(n2, ch2); test := true; { assume "brotherhood" } for i := 1 to length(ch1) do if not contains(ch2, ch1[i]) then test := false; { obviously no brothers after all } { must test both ways, so (n1=455, n2=504) fails too } for i := 1 to length(ch2) do if not contains(ch1, ch2[i]) then test := false; brother := test; end;而不是,你也可以使用repeat until 。
Try something like this instead:
function contains(s: string; ch: char): boolean; var i: integer; begin contains := false; for i := 1 to length(s) do if s[i] = ch then contains := true; end; function brother(n1, n2: integer): boolean; var test: boolean; ch1, ch2: string; i: integer; begin str(n1, ch1); str(n2, ch2); test := true; { assume "brotherhood" } for i := 1 to length(ch1) do if not contains(ch2, ch1[i]) then test := false; { obviously no brothers after all } { must test both ways, so (n1=455, n2=504) fails too } for i := 1 to length(ch2) do if not contains(ch1, ch2[i]) then test := false; brother := test; end;Instead of for, you can use repeat until too.
更多推荐
发布评论