{"id":30606,"date":"2026-07-20T02:09:23","date_gmt":"2026-07-19T17:09:23","guid":{"rendered":"https:\/\/123210.net\/wordpress\/tatenaoshi\/?p=30606"},"modified":"2026-07-20T10:46:26","modified_gmt":"2026-07-20T01:46:26","slug":"%e5%86%8d%e5%b8%b0%e3%81%ae%e5%9f%ba%e7%a4%8e%ef%bc%9a%e6%b3%a2%e3%82%92%e5%86%8d%e5%b8%b0%e3%83%a2%e3%83%87%e3%83%ab%e3%81%a7%e8%a1%a8%e7%8f%be%e3%81%99%e3%82%8b%e3%80%80%e9%80%86%e8%bb%a2%e7%89%88","status":"publish","type":"post","link":"https:\/\/123210.net\/wordpress\/tatenaoshi\/%e5%86%8d%e5%b8%b0%e3%81%ae%e5%9f%ba%e7%a4%8e%ef%bc%9a%e6%b3%a2%e3%82%92%e5%86%8d%e5%b8%b0%e3%83%a2%e3%83%87%e3%83%ab%e3%81%a7%e8%a1%a8%e7%8f%be%e3%81%99%e3%82%8b%e3%80%80%e9%80%86%e8%bb%a2%e7%89%88\/","title":{"rendered":"\u518d\u5e30\u306e\u57fa\u790e\uff1a\u6ce2\u3092\u518d\u5e30\u30e2\u30c7\u30eb\u3067\u8868\u73fe\u3059\u308b\u3000\u9006\u8ee2\u7248\uff08\u904e\u53bb\u2192\u73fe\u5728\uff09\u3092\u8ffd\u52a0"},"content":{"rendered":"<p>\u5b9f\u884c\u7d50\u679c<\/p>\n<p><a href=\"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u5b9f\u884c\u7d50\u679c7.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-30619\" src=\"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u5b9f\u884c\u7d50\u679c7.jpg\" alt=\"\" width=\"901\" height=\"1254\" srcset=\"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u5b9f\u884c\u7d50\u679c7.jpg 901w, https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u5b9f\u884c\u7d50\u679c7-216x300.jpg 216w, https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u5b9f\u884c\u7d50\u679c7-736x1024.jpg 736w, https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-content\/uploads\/sites\/3\/2026\/07\/\u5b9f\u884c\u7d50\u679c7-768x1069.jpg 768w\" sizes=\"auto, (max-width: 901px) 100vw, 901px\" \/><\/a><\/p>\n<hr \/>\n<p>C++Builder2007\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9<\/p>\n<p>\/\/************************<br \/>\n\/\/***** Unit1.h ********<br \/>\n\/\/************************<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>#ifndef Unit1H<br \/>\n#define Unit1H<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n#include &lt;Classes.hpp&gt;<br \/>\n#include &lt;Controls.hpp&gt;<br \/>\n#include &lt;StdCtrls.hpp&gt;<br \/>\n#include &lt;Forms.hpp&gt;<br \/>\n#include &#8220;Chart.hpp&#8221;<br \/>\n#include &#8220;TeEngine.hpp&#8221;<br \/>\n#include &#8220;TeeProcs.hpp&#8221;<br \/>\n#include &lt;ExtCtrls.hpp&gt;<br \/>\n#include &#8220;Series.hpp&#8221;<\/p>\n<p>#include &lt;vector&gt;<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nconst int max_depth = 100; \/\/ \u6700\u5927\u968e\u5c64\u6570<\/p>\n<p>class RecursiveWave<br \/>\n{<br \/>\npublic:<br \/>\nint current_depth; \/\/ \u30af\u30e9\u30b9\u30e1\u30f3\u30d0\u30fc\u3068\u3057\u3066<br \/>\ndouble Value;<br \/>\nRecursiveWave *child;<br \/>\nRecursiveWave *z_1, *z_2;<br \/>\nint direction; \/\/ +1: \u9806\u65b9\u5411\u3001 -1:\u9006\u65b9\u5411<\/p>\n<p>\/\/ RecursiveWave\u30af\u30e9\u30b9\u306b\u8ffd\u52a0\uff08public\uff09 \u9006\u8ee2\u7248\uff08\u30c8\u30c3\u30d7\u30c0\u30a6\u30f3\u7528\uff09<br \/>\nbool isTopDownMode;<\/p>\n<p>RecursiveWave(int n, int dir);<\/p>\n<p>void LinkParents(RecursiveWave* parent1, RecursiveWave* parent2); \/\/ \u5f8c\u304b\u3089\u30ea\u30f3\u30af<br \/>\nvoid Dump(TMemo *memo);<br \/>\ndouble GetValue(){ return Value; }<br \/>\n};<\/p>\n<p>std::vector&lt;RecursiveWave*&gt; all_waves;<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nclass TForm1 : public TForm<br \/>\n{<br \/>\n__published: \/\/ IDE-managed Components<br \/>\nTChart *Chart1;<br \/>\nTButton *ButtonExit;<br \/>\nTLineSeries *Series1;<br \/>\nTMemo *Memo1;<br \/>\nTLineSeries *Series2;<br \/>\nTButton *Button1;<br \/>\nTRadioGroup *RadioGroup1;<br \/>\nvoid __fastcall ButtonExitClick(TObject *Sender);<br \/>\nvoid __fastcall Button1Click(TObject *Sender);<br \/>\nprivate: \/\/ User declarations<br \/>\npublic: \/\/ User declarations<br \/>\n__fastcall TForm1(TComponent* Owner);<\/p>\n<p>RecursiveWave *Top;<br \/>\nvoid ChartSetting();<\/p>\n<p>};<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nextern PACKAGE TForm1 *Form1;<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n#endif<\/p>\n<p>\/\/************************<br \/>\n\/\/***** Unit1.cpp ******<br \/>\n\/\/************************<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>#include &lt;vcl.h&gt;<br \/>\n#pragma hdrstop<\/p>\n<p>#include &lt;math.h&gt;<br \/>\n#include &#8220;Unit1.h&#8221;<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n#pragma package(smart_init)<br \/>\n#pragma link &#8220;Chart&#8221;<br \/>\n#pragma link &#8220;TeEngine&#8221;<br \/>\n#pragma link &#8220;TeeProcs&#8221;<br \/>\n#pragma link &#8220;Series&#8221;<br \/>\n#pragma resource &#8220;*.dfm&#8221;<br \/>\nTForm1 *Form1;<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\n__fastcall TForm1::TForm1(TComponent* Owner)<br \/>\n: TForm(Owner)<br \/>\n{<br \/>\n}<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br \/>\nvoid __fastcall TForm1::ButtonExitClick(TObject *Sender)<br \/>\n{<br \/>\nClose();<br \/>\n}<br \/>\n\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>\/\/ ChartSetting<br \/>\nvoid TForm1::ChartSetting()<br \/>\n{<br \/>\nChart1-&gt;SeriesList-&gt;ClearValues();<\/p>\n<p>\/\/ \u8ef8\u30bf\u30a4\u30c8\u30eb\u3060\u3051\u8a2d\u5b9a\uff08SeriesCount\u30c1\u30a7\u30c3\u30af\u306fButton1Click\u5074\u306b\u79fb\u52d5\uff09<br \/>\nChart1-&gt;LeftAxis-&gt;Title-&gt;Caption = &#8220;Value&#8221;;<br \/>\nChart1-&gt;LeftAxis-&gt;Title-&gt;Visible = true;<br \/>\nChart1-&gt;RightAxis-&gt;Title-&gt;Caption = &#8220;Depth&#8221;;<br \/>\nChart1-&gt;RightAxis-&gt;Title-&gt;Visible = true;<br \/>\nChart1-&gt;RightAxis-&gt;Visible = true;<br \/>\nChart1-&gt;BottomAxis-&gt;Title-&gt;Caption = &#8220;Count&#8221;;<br \/>\nChart1-&gt;BottomAxis-&gt;Visible = true;<\/p>\n<p>}<\/p>\n<p>\/\/ ***** \u53cc\u65b9\u5411\u7248 *****<br \/>\nRecursiveWave::RecursiveWave(int n, int dir): current_depth(n), Value(0.0), child(NULL),<br \/>\nz_1(NULL), z_2(NULL), direction(dir)<br \/>\n{<br \/>\nif (n &gt;= max_depth) return;<\/p>\n<p>if(direction == -1){<br \/>\n\/\/ \u5b50\u3092\u5148\u306b\u4f5c\u6210\uff08\u518d\u5e30\uff09<br \/>\nchild = new RecursiveWave(n + 1, dir);<\/p>\n<p>\/\/ all_waves\u767b\u9332<br \/>\nall_waves.push_back(this);<\/p>\n<p>}else if(direction == +1){<br \/>\n\/\/ all_waves\u306b\u5148\u306b\u767b\u9332<br \/>\nall_waves.push_back(this);<\/p>\n<p>\/\/ \u5b50\u3092\u5148\u306b\u4f5c\u6210\uff08\u518d\u5e30\uff09<br \/>\nchild = new RecursiveWave(n + 1, dir);<\/p>\n<p>}<\/p>\n<p>}<\/p>\n<p>\/\/ \u65b0\u898f\u30d8\u30eb\u30d1\u30fc\u95a2\u6570\uff08\u30c8\u30c3\u30d7\u30c0\u30a6\u30f3\u3067\u89aa\u60c5\u5831\u3092\u4f1d\u64ad\uff09<br \/>\nvoid SetupParents(RecursiveWave* node, RecursiveWave* p1, RecursiveWave* p2) {<br \/>\nif (!node) return;<\/p>\n<p>node-&gt;LinkParents(p1, p2);<\/p>\n<p>\/\/ \u5b50\u306b\u4f1d\u3048\u308b\uff08z_1 = node\u81ea\u8eab\u3001z_2 = p1\uff09<br \/>\nSetupParents(node-&gt;child, node, p1);<br \/>\n}<\/p>\n<p>\/\/ \u69cb\u7bc9\u5f8c\u306b\u89aa\u3092\u8a2d\u5b9a\u3059\u308b\u5c02\u7528\u30e1\u30bd\u30c3\u30c9<br \/>\nvoid RecursiveWave::LinkParents(RecursiveWave* parent1, RecursiveWave* parent2) {<br \/>\nz_1 = parent1;<br \/>\nz_2 = parent2 ? parent2 : parent1; \/\/ z_2\u304c\u306a\u3051\u308c\u3070z_1\u3067\u4ee3\u7528<\/p>\n<p>\/\/ Value\u3092\u89aa\u3092\u4f7f\u3063\u3066\u8a08\u7b97<br \/>\nif (z_1) {<br \/>\nValue = z_1-&gt;Value * 1.7 &#8211; (z_2 ? z_2-&gt;Value * 0.97 : 0.0) + 1.0;<br \/>\n} else {<br \/>\nValue = 1.0; \/\/ \u6700\u4e0a\u4f4d\u306e\u521d\u671f\u5024<br \/>\n}<br \/>\n}<br \/>\n\/\/**********************<\/p>\n<p>&nbsp;<\/p>\n<p>void RecursiveWave::Dump(TMemo *memo)<br \/>\n{<br \/>\nif (all_waves.empty()) return;<\/p>\n<p>AnsiString str;<br \/>\nint count = 0;<\/p>\n<p>for (std::vector&lt;RecursiveWave*&gt;::const_iterator it = all_waves.begin();<br \/>\nit != all_waves.end(); ++it) {<br \/>\nRecursiveWave* neigh = *it;<br \/>\nif (neigh) {<br \/>\nmemo-&gt;Lines-&gt;Add(str.sprintf(&#8220;depth= %d, Value= %g&#8221;, neigh-&gt;current_depth, neigh-&gt;Value) );<br \/>\ncount++;<br \/>\n}<br \/>\n}<\/p>\n<p>\/*memo-&gt;Lines-&gt;Add(&#8220;==============&#8221;);<br \/>\nfor(int i=0; i&lt;all_waves-&gt;size(); i++){<br \/>\nmemo-&gt;Lines-&gt;Add(str.sprintf(&#8220;depth= %d, Value= %g&#8221;, i, (*all_waves)[i].Value ) );<br \/>\n}*\/<\/p>\n<p>}<\/p>\n<p>void __fastcall TForm1::Button1Click(TObject *Sender)<br \/>\n{<br \/>\n\/\/ \u65e2\u5b58\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u30af\u30ea\u30a2\uff08\u30e1\u30e2\u30ea\u30ea\u30fc\u30af\u9632\u6b62\uff09<br \/>\nfor (size_t i = 0; i &lt; all_waves.size(); i++) {<br \/>\ndelete all_waves[i];<br \/>\n}<br \/>\nall_waves.clear();<\/p>\n<p>\/\/\u65b9\u5411\u6307\u5b9a\u3001\u521d\u671f\u5316\u3001\u751f\u6210<br \/>\nRecursiveWave *WaveTop;<br \/>\nif(RadioGroup1-&gt;ItemIndex == 1){<br \/>\n\/\/\u9806\u65b9\u5411<br \/>\nWaveTop = new RecursiveWave(0, +1); \/\/ \u5f15\u6570\u4e0d\u8981\uff01<\/p>\n<p>}else if(RadioGroup1-&gt;ItemIndex == 0){<br \/>\n\/\/\u9006\u65b9\u5411<br \/>\nWaveTop = new RecursiveWave(0, -1); \/\/ \u5f15\u6570\u4e0d\u8981\uff01<br \/>\n}<\/p>\n<p>\/\/ \u518d\u5e30\u7684\u306b\u89aa\u30ea\u30f3\u30af\u3092\u8a2d\u5b9a\uff08\u30c8\u30c3\u30d7\u30c0\u30a6\u30f3\uff09<br \/>\nSetupParents(WaveTop, NULL, NULL); \/\/ \u65b0\u898f\u30d8\u30eb\u30d1\u30fc\u95a2\u6570<\/p>\n<p>WaveTop-&gt;Dump(Memo1);<\/p>\n<p>ChartSetting();<\/p>\n<p>\/\/ Series\u3092\u5b89\u5168\u306b\u8ffd\u52a0<br \/>\nChart1-&gt;SeriesList-&gt;ClearValues(); \/\/ \u5ff5\u306e\u305f\u3081<\/p>\n<p>\/\/ Series[0] \u3068 Series[1] \u304c\u78ba\u5b9f\u306b\u5b58\u5728\u3059\u308b\u3053\u3068\u3092\u4fdd\u8a3c<br \/>\nwhile (Chart1-&gt;SeriesCount() &lt; 2) {<br \/>\nTLineSeries* s = new TLineSeries(Chart1);<br \/>\nChart1-&gt;AddSeries(s);<br \/>\n}<\/p>\n<p>int count = 0;<br \/>\nfor (std::vector&lt;RecursiveWave*&gt;::const_iterator it = all_waves.begin();<br \/>\nit != all_waves.end(); ++it) {<br \/>\nRecursiveWave* neigh = *it;<br \/>\nif (neigh) {<br \/>\nChart1-&gt;Series[0]-&gt;AddY(neigh-&gt;Value, &#8220;&#8221;, clBlue); \/\/ Value\uff08\u5de6\u8ef8\uff09<br \/>\nChart1-&gt;Series[1]-&gt;AddY(neigh-&gt;current_depth, &#8220;&#8221;, clRed); \/\/ Depth\uff08\u53f3\u8ef8\uff09 \u2190 \u30b3\u30e1\u30f3\u30c8\u89e3\u9664OK<br \/>\ncount++;<br \/>\n}<br \/>\n}<\/p>\n<p>\/\/ \u8ef8\u8a2d\u5b9a\u3092\u518d\u9069\u7528<br \/>\nChart1-&gt;Series[0]-&gt;VertAxis = 0; \/\/ vaLeft<br \/>\nChart1-&gt;Series[1]-&gt;VertAxis = 1; \/\/ vaRight<\/p>\n<p>}<\/p>\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5b9f\u884c\u7d50\u679c C++Builder2007\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9 \/\/************ &hellip; <a href=\"https:\/\/123210.net\/wordpress\/tatenaoshi\/%e5%86%8d%e5%b8%b0%e3%81%ae%e5%9f%ba%e7%a4%8e%ef%bc%9a%e6%b3%a2%e3%82%92%e5%86%8d%e5%b8%b0%e3%83%a2%e3%83%87%e3%83%ab%e3%81%a7%e8%a1%a8%e7%8f%be%e3%81%99%e3%82%8b%e3%80%80%e9%80%86%e8%bb%a2%e7%89%88\/\">\u7d9a\u304d\u3092\u8aad\u3080 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-30606","post","type-post","status-publish","format-standard","hentry","category-1"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts\/30606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/comments?post=30606"}],"version-history":[{"count":10,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts\/30606\/revisions"}],"predecessor-version":[{"id":30620,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/posts\/30606\/revisions\/30620"}],"wp:attachment":[{"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/media?parent=30606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/categories?post=30606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/123210.net\/wordpress\/tatenaoshi\/wp-json\/wp\/v2\/tags?post=30606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}