前提・実現したいこと
配列の要素を5個の要素からなるグループに分けたいのですが方法が分かりません。
該当のソースコード
#include <stdio.h> #include <malloc.h> #include <stdlib.h> int main(void){ int num[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} int A[5], B[5]; num[]の要素を先頭から取り出してそれぞれA, Bの順に入れ、表示させるようなプログラムを作りたいです。
補足情報(FW/ツールのバージョンなど)
Cygwin64
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
2次元配列にキャストする方法はどうでしょうか?
C
1#include <stdio.h> 2 3#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) 4#define SPLIT_SIZE 5 5 6int main(void) 7{ 8 int num[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, }; 9 int (*split_num)[SPLIT_SIZE] = (int(*)[SPLIT_SIZE])num; 10 11 for (size_t i = 0; i < ARRAY_SIZE(num) / SPLIT_SIZE; i++){ 12 for (size_t j = 0; j < SPLIT_SIZE; j++){ 13 printf("split_num[%zu][%zu] = %d\n", i, j, split_num[i][j]); 14 } 15 } 16 17 size_t i = ARRAY_SIZE(num) / SPLIT_SIZE; 18 for (size_t j = 0; j < ARRAY_SIZE(num) % SPLIT_SIZE; j++){ 19 printf("split_num[%zu][%zu] = %d\n", i, j, split_num[i][j]); 20 } 21 22 return 0; 23}
投稿2022/01/28 10:38
編集2022/01/28 13:27総合スコア113
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
int型が1000個の配列のケースの例です。
X = (int *)malloc( 1000 * sizeof(int) );を使用する例です。
1000個の配列を5個単位で200組と考えます。
1組目=X[0]~X[4]
2組目=X[5]~X[9]
のように考えます。
C
1#include <stdio.h> 2#include <stdlib.h> 3int main(void) 4{ 5 int num[1000] = { 0 }; 6 int *X; 7 int i; 8 //numに初期値を設定する { 0,1,2,3,....999} 9 for (i = 0; i < 1000; i++) { 10 num[i] = i; 11 } 12 X = (int*)malloc(1000*sizeof(int)); 13 // Xへnumの値をコピーする 14 for (i = 0; i < 1000; i++) { 15 *(X+i) = num[i]; 16 } 17 //Xの内容を5個ごとに印字する 18 for (i = 0; i < 200; i++) { 19 printf("%d番目のテーブル [0]=%d [1]=%d [2]=%d [3]=%d [4]=%d\n", i+1, 20 *(X+5*i),*(X+5*i+1),*(X+5*i+2),*(X+5*i+3),*(X+5*i+4)); 21 } 22 return 0; 23} 24
投稿2022/01/28 23:40
総合スコア5438
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
以下のようにしてください。
C
1#include <stdio.h> 2int main(void) 3{ 4 int num[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 5 int A[5], B[5]; 6 int i; 7 for (i = 0; i < 5; i++) { 8 A[i] = num[i]; 9 B[i] = num[i + 5]; 10 } 11 12 for (i = 0; i < 5; i++) { 13 printf("A[%d]=%d\n", i, A[i]); 14 } 15 for (i = 0; i < 5; i++) { 16 printf("B[%d]=%d\n", i, B[i]); 17 } 18 return 0; 19} 20
投稿2022/01/28 07:00
総合スコア5438
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/28 07:06
2022/01/28 08:12 編集
2022/01/28 08:04
2022/01/28 08:15
2022/01/28 10:09
2022/01/28 13:45
2022/01/28 14:32
2022/01/28 15:07 編集
2022/01/28 23:37 編集
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。