ボタンを押すと10<a*a-b*b<100、ただしa,bは整数で1<a<b<20の範囲で、という式を満たすa,bをすべて求めてリストボックスに表示して、それとは別の欄にその解の組の総数を表示するにはどうしたらよいでしょうか。よろしくお願いします
計算するまでもなく
1<a<b<20
これで
10<a*a-b*b<100
を満たすことはないのでゼロです。
b>a ですから a*a-b*b は常に負。
すいません、書き間違いです。10<b*b-a*a<100でした
どこがわからないのですか?
1)for 文
2)判断
3)個数の求め方
4)ListBox への書き込み方
5)その他
procedure TForm1.Button1Click(Sender: TObject);
var a,b:byte;
c:integer;
str:string;
begin
str:='';
for b:=19 downto 3 do
for a:=b-1 downto 2 do
begin
c:=b*b-a*a;
if (10<c) and (c<100) then
str:=str + '(a:'+inttostr(a)+
',b:'+inttostr(b)+
') b*b-a*a='+inttostr(c)+
#13#10;
end;
ListBox1.Items.Text:=str;
end;
jokさん3、4です。リストボックスに表示して行数でも数えればいいのでしょうか?(その方法もわからないのです・・・すいません
3)個数の求め方
var
kosuu:integer
としておいてコードの最初で kosuu := 0; と初期化しておき、条件が合致する
たびに Inc(kosuu); として、kosuu を一つずつ増加させます。指を折るのと
同じですね。
4)ListBox への書き込み方
数え終わったら、
ListBox1.Items.Add('個数 = '+IntToStr(kosuu));
とします。
> リストボックスに表示して行数でも数えればいいのでしょうか?
この方法もあります。最初に ListBox1.Clear と項目をクリアしておき、
全部の解の組を書き終わったら、最後に
ListBox1.Items.Add('個数 = '+IntToStr(ListBox1.Items.Count));
とすると項目の数を表示できます。
count使って何とかなりました。本当にありがとうございました
ツイート | ![]() |