涡轮帕斯卡家庭作业
Turbo-pascal home work
我在这个 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;
当我 运行 这个时,它总是打印 ("integers are brothers") 即使我放
504和455,我想知道错在哪里
你需要 pascal 的 else/if
变体,你必须检查它是否相等。
试试这样的方法:
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
而不是 for
。
我在这个 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;
当我 运行 这个时,它总是打印 ("integers are brothers") 即使我放 504和455,我想知道错在哪里
你需要 pascal 的 else/if
变体,你必须检查它是否相等。
试试这样的方法:
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
而不是 for
。