10つづの素数を配列で、数字で、管理たいのですが、どういう方法がありますか?
添字は10の倍数なので、
ArrPrime[0]:= 2,3,5,7 //2-10
ArrPrime[1]:= 11,13,17,19 //11-20
ArrPrime[2]:= 23,29 //21-30
みたいに数字で管理したいのですが・・・。
可能なら、参照引数か、関数の戻り値で、どういう方法がありますか?
現在は、TStringListに、カンマ区切りで、10づつ入れています。
ArrPrime.Add( '2,3,5,7' ); //2-10
ArrPrime.Add( '11,13,17,19' ); //11-20
ArrPrime.Add( '23,29' ); //21-30
として、素数を文字に、ここの素数の文字を使う時に、カンマ区切りを分け、位置を特定し、文字を数字という具合に、戻しています。
もっとスマートな方法があれば、お知恵を拝借したいです。
10つづの素数と書きましたが、100づつや1000づつも視野に入れているので、なにかスマートな方法はないかと。
多次元動的配列
http://docwiki.embarcadero.com/RADStudio/XE8/ja/%E6%A7%8B%E9%80%A0%E5%8C%96%E5%9E%8B#.E5.A4.9A.E6.AC.A1.E5.85.83.E5.8B.95.E7.9A.84.E9.85.8D.E5.88.97
は、いかがですか?
多次元配列は知っていたのですが、
array of array of array of .... Integer;
みたいなarray ofが、動的に増えていくには?と勘違いしていました。
ありがとうございます。
のと、多分仕様だと思うんですが。
素数の部分を一括で入れると、中身が変わってしまうのですが、これは仕様でしょうか?
SetLength(AddData, 3);
AddData[0]:= 0;
AddData[1]:= 1;
AddData[2]:= 2;
SetLength(Datas, 2);
SetLength(Datas[0], 3);
// for i := 0 to 3-1 do
Datas[0]:= AddData;
AddData[0]:= 555;
SetLength(Datas[1], 3);
// for i := 0 to 3-1 do
Datas[1]:= AddData;
555,1,2
555,1,2
になるが、
0,1,2
555,1,2
にしたかった。
for i := 0 to 2-1 do
Datas[1][i]:= AddData[i];
にすれば問題ないので、解決はしていますが気になったので、解説お願いします。
> 素数の部分を一括で入れると、中身が変わってしまうのですが、これは仕様でしょうか?
動的配列 をヘルプで見ると、
> 動的配列変数は暗黙にポインタであり・・・
とあるようです。
やはり仕様ですか。
15分ほど右往左往してしまいました。
解説御含め、ありがとうございました。
更に新たな一歩が踏め出せそうです。
ツイート | ![]() |