いま、配列を作る作業をしているのですが、for文を使うと、forをいくつ書けば良いのか分からない状態です。
作ろうとしている配列が、A[X][Y]で、Xの要素数は固定で良いのですが、Yの要素数が実験のたびに変動するためです。そして、処理したいのが、この配列の各列の値を適当な値(このfor文の前に値が決まっています)を代入することです。
例えば、for文だと、Y=3のときには
for(i=0;i<○;i++){
for(j=0;j<○;j++){
for(k=0;k<○;k++){
A[line][0] = C[i];//(Cという配列のi成分)
A[line][1] = B[j];
A[line][2] = E[k];
}
}
}
のように書くような内容なのですが、Yが増えると、for文も増やさないといけません。
ここで、再帰処理のような方法をつかってうまく書きたいのですが、どう書いたら良いのか分かりません。
一般的なfor文の書き換え方みたいなことでも良いので、教えて頂けませんか?宜しくお願いします。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
#2 さんと同じ考えですが、いまいち、質問の意味がわかりません。
例えば、for文だと、Y=3のときには
for(i=0;i<○;i++){
for(j=0;j<○;j++){
for(k=0;k<○;k++){
A[line][0] = C[i];//(Cという配列のi成分)
A[line][1] = B[j];
A[line][2] = E[k];
}
}
}
ではYが増えて、Y=4やY=5だと、どのようにfor()文が変わるのですか?
No.4
- 回答日時:
訂正です
> ○が共通だったら、Y=3なら、○進数3桁と考えて、 k*3^2+j*3+i とする。
○が共通だったら、Y=3なら、○進数3桁と考えて、 k*○^2+j*○+i とする。
No.3
- 回答日時:
作ろうとしているものの条件がよくわからないのですが?
毎回違うのは Y だけですか?
それとも、(この例なら) C,B,Eの長さもですか?
また、C,B,Eの長さは共通(質問中の○が同じ値になる)ですか?
それとも、一定の法則で計算できるものですか?
それとも、それぞれ独立ですか?
例えば、こんなやりかたはあります。
・C.B.Eといった個別の配列では、ループや再帰には向かないので、 T[0]=C, T[1]=B, ...のような配列の配列とか、ポインタの配列にする。
・i,j,k...の値と一対一で対応する値の計算方法を考える。
○が共通だったら、Y=3なら、○進数3桁と考えて、 k*3^2+j*3+i とする。
・forの2重ループ。
for( idx=0;idx < ○のY乗 ; ++ idx ) {
temp_idx=idx ;
for( y=0; y < Y; ++y ) {
i0 = temp_idx % ○ ; // 余りで、下の桁を取り出す
temp_idx /= ○ ; // 一桁シフト
A[line][y] = T[y][i0] ;
}
/* この位置にAを使った処理が入らなければ */
/* idxのループは無意味なのは、既に指摘のある通り */
}
No.1
- 回答日時:
>再帰処理のような方法をつかってうまく書きたいのですが
それ以前にやりたい事が良く分かりません。
例としてソースを書くにしても、もう少し前後の処理を含め、値の確定など詳細に書いた上で質問した方が良いと思います。
少なくとも今の例では、
for(i=0;i<○;i++){
for(j=0;j<○;j++){
for(k=0;k<○;k++){
を仮に
for(i=0;i<10i++){
for(j=0;j<20;j++){
for(k=0;k<30;k++){
と仮定した場合、forループ無しの
A[line][0] = C[10];
A[line][1] = B[20];
A[line][2] = E[30];
と同意ですよ。
それとも、各ループ内で、A[line]の初期化と処理がクローズされていると言う事ですか?
まずは、「初期化」だけに絞ってロジックを考え、その上で質問する事をお勧めします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作成するには 2 2022/10/25 21:19
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(プログラミング・Web制作) Pythonでこのプログラミングを作りたいのですが 1 2022/10/24 18:56
- C言語・C++・C# 変数のスコープ 5 2023/05/27 17:50
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- その他(プログラミング・Web制作) python pandas 行ごとに列名(列番号)を指定して抽出したい 1 2023/05/26 13:47
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
subの配列引数をoptionalで使う...
-
配列変数の添字が範囲外ですと...
-
ListViewで、非表示列って作れ...
-
エクセルで最小値から0を除く方法
-
VB6 配列を初期化したい
-
VBのFunctionで、配列を引数...
-
配列の内容に重複をなくすには...
-
順列の作成
-
ArrayListの初期値に二次元配列...
-
for each の現在の配列ポインタ...
-
エクセルマクロで配列の値から...
-
VBAで近似曲線の係数取得
-
MATLABにて場合分け関数を定義...
-
Dim は何の略ですか?
-
特定のセル範囲で4文字以上入力...
-
linest関数に配列を渡す
-
Excel-VBAで内臓のMINVERSE,MM...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列数式の解除
-
2つ以上の変数を比較して最大数...
-
VBA 1次元配列を2次元に追加する
-
特定のセル範囲で4文字以上入力...
-
for each の現在の配列ポインタ...
-
VBのFunctionで、配列を引数...
-
subの配列引数をoptionalで使う...
-
VB6 配列を初期化したい
-
ListViewで、非表示列って作れ...
-
配列変数の添字が範囲外ですと...
-
Excel-VBAの配列「Public Const...
-
2次元動的配列の第一引数のみを...
-
VBAで近似曲線の係数取得
-
VLOOKUP関数で、一番下...
-
配列に同じ値を入れる方法
-
エクセルで最小値から0を除く方法
-
linest関数に配列を渡す
-
配列を任意の数値で埋める方法
-
Dim は何の略ですか?
-
配列内の内容を全て表示する方法
おすすめ情報