解の総数を表示するには?

解決


karuru  2004-08-13 02:33:02  No: 10384

ボタンを押すと10<a*a-b*b<100、ただしa,bは整数で1<a<b<20の範囲で、という式を満たすa,bをすべて求めてリストボックスに表示して、それとは別の欄にその解の組の総数を表示するにはどうしたらよいでしょうか。よろしくお願いします


jok  2004-08-13 04:47:49  No: 10385

計算するまでもなく

1<a<b<20

これで

10<a*a-b*b<100

を満たすことはないのでゼロです。

b>a ですから a*a-b*b は常に負。


karuru  2004-08-13 05:01:11  No: 10386

すいません、書き間違いです。10<b*b-a*a<100でした


jok  2004-08-13 05:58:38  No: 10387

どこがわからないのですか?

1)for 文
2)判断
3)個数の求め方
4)ListBox への書き込み方
5)その他


.  2004-08-13 08:43:55  No: 10388

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;


karuru  2004-08-13 21:41:36  No: 10389

jokさん3、4です。リストボックスに表示して行数でも数えればいいのでしょうか?(その方法もわからないのです・・・すいません


jok  2004-08-13 22:28:37  No: 10390

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));

とすると項目の数を表示できます。


karuru  2004-08-13 23:53:58  No: 10391

count使って何とかなりました。本当にありがとうございました


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加