/* 2つの配列を交互に3つ目の配列に入れるプログラム */
/* 2023.11.05 Mori.Tomoki */
#include <stdio.h>
#define DATAMAXA 10
#define DATAMAXB 10
#define DATAMAXC 17
void mergearray(int[], int, int[], int, int[], int*); /* 2つの配列を交互に3つ目の配列に入れる関数 */
/* メイン関数 */
int main(void){
int numa, numb, numc=0; /* 入力されたデータの数 */
int array_A[DATAMAXA], array_B[DATAMAXB], array_C[DATAMAXC]; /* データを格納する配列 */
int i;
/* n個のデータを入力してもらい、array_A[]に格納 */
printf("1つ目の配列に好きな正の整数をいくつか入力してください。\n"); printf("終了するときはゼロを入力してください。\n"); numa = 0;
scanf("%d",&array_A
[numa
]); while(array_A[numa]!=0) {
numa++;
if (numa==DATAMAXA){
printf("データ数の上限%dを超えました。\n",DATAMAXA
); break;
}
scanf("%d",&array_A
[numa
]); }
/* n個のデータを入力してもらい、array_B[]に格納 */
printf("2つ目の配列に好きな正の整数をいくつか入力してください。\n"); printf("終了するときはゼロを入力してください。\n"); numb = 0;
scanf("%d",&array_B
[numb
]); while(array_B[numb]!=0) {
numb++;
if (numb==DATAMAXB){
printf("データ数の上限%dを超えました。\n",DATAMAXB
); break;
}
scanf("%d",&array_B
[numb
]); }
mergearray(array_A, numa, array_B, numb, array_C, &numc);
for (i=0; i<numc; i++) {
}
return 0;
}
/* 2つの配列を交互に3つ目の配列に入れる関数 */
void mergearray(int array_A[], int numa, int array_B[], int numb, int array_C[], int *numc){
int i, j, k;
if (numa <= numb){
for (i=0, j=0; i<numa; i++){
array_C[k++] = array_A[i];
if (k==DATAMAXC){
printf("データ数の上限%dを超えました。\n",DATAMAXC
); k-=2;
break;
}
array_C[k++] = array_B[j++];
}
for (j=numa, k=numa*2; j<numb; j++){
array_C[k++] = array_B[j];
}
} else { /* numa > numb */
for (i=0, j=0; i<numb; i++){
array_C[k++] = array_A[i];
array_C[k++] = array_B[j++];
}
for (i=numb, k=numb*2; i<numa; i++){
array_C[k++] = array_A[i];
}
}
*numc = k;
}
Lyog77yS44Gk44Gu6YWN5YiX44KS5Lqk5LqS44Gr77yT44Gk55uu44Gu6YWN5YiX44Gr5YWl44KM44KL44OX44Ot44Kw44Op44OgICovCi8qICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAyMy4xMS4wNSBNb3JpLlRvbW9raSAqLwojaW5jbHVkZSA8c3RkaW8uaD4KI2RlZmluZSBEQVRBTUFYQSAxMAojZGVmaW5lIERBVEFNQVhCIDEwCiNkZWZpbmUgREFUQU1BWEMgMTcKCnZvaWQgbWVyZ2VhcnJheShpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnRbXSwgaW50Kik7ICAgLyog77yS44Gk44Gu6YWN5YiX44KS5Lqk5LqS44Gr77yT44Gk55uu44Gu6YWN5YiX44Gr5YWl44KM44KL6Zai5pWwICovCgovKiDjg6HjgqTjg7PplqLmlbAgKi8KaW50IG1haW4odm9pZCl7CglpbnQgbnVtYSwgbnVtYiwgbnVtYz0wOyAgIC8qIOWFpeWKm+OBleOCjOOBn+ODh+ODvOOCv+OBruaVsCAqLwoJaW50IGFycmF5X0FbREFUQU1BWEFdLCBhcnJheV9CW0RBVEFNQVhCXSwgYXJyYXlfQ1tEQVRBTUFYQ107ICAgLyog44OH44O844K/44KS5qC857SN44GZ44KL6YWN5YiXICovCglpbnQgaTsKCQoJLyogbuWAi+OBruODh+ODvOOCv+OCkuWFpeWKm+OBl+OBpuOCguOCieOBhOOAgWFycmF5X0FbXeOBq+agvOe0jSAqLwoJcHJpbnRmKCLvvJHjgaTnm67jga7phY3liJfjgavlpb3jgY3jgarmraPjga7mlbTmlbDjgpLjgYTjgY/jgaTjgYvlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiIpOwoJcHJpbnRmKCLntYLkuobjgZnjgovjgajjgY3jga/jgrzjg63jgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiIpOwoJbnVtYSA9IDA7CglzY2FuZigiJWQiLCZhcnJheV9BW251bWFdKTsKCXdoaWxlKGFycmF5X0FbbnVtYV0hPTApIHsKCQludW1hKys7CgkJaWYgKG51bWE9PURBVEFNQVhBKXsKCQkJcHJpbnRmKCLjg4fjg7zjgr/mlbDjga7kuIrpmZAlZOOCkui2heOBiOOBvuOBl+OBn+OAglxuIixEQVRBTUFYQSk7CgkJCWJyZWFrOwoJCX0KCQlzY2FuZigiJWQiLCZhcnJheV9BW251bWFdKTsKCX0KCQoJLyogbuWAi+OBruODh+ODvOOCv+OCkuWFpeWKm+OBl+OBpuOCguOCieOBhOOAgWFycmF5X0JbXeOBq+agvOe0jSAqLwoJcHJpbnRmKCLvvJLjgaTnm67jga7phY3liJfjgavlpb3jgY3jgarmraPjga7mlbTmlbDjgpLjgYTjgY/jgaTjgYvlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiIpOwoJcHJpbnRmKCLntYLkuobjgZnjgovjgajjgY3jga/jgrzjg63jgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIJcbiIpOwoJbnVtYiA9IDA7CglzY2FuZigiJWQiLCZhcnJheV9CW251bWJdKTsKCXdoaWxlKGFycmF5X0JbbnVtYl0hPTApIHsKCQludW1iKys7CgkJaWYgKG51bWI9PURBVEFNQVhCKXsKCQkJcHJpbnRmKCLjg4fjg7zjgr/mlbDjga7kuIrpmZAlZOOCkui2heOBiOOBvuOBl+OBn+OAglxuIixEQVRBTUFYQik7CgkJCWJyZWFrOwoJCX0KCQlzY2FuZigiJWQiLCZhcnJheV9CW251bWJdKTsKCX0KCQoJbWVyZ2VhcnJheShhcnJheV9BLCBudW1hLCBhcnJheV9CLCBudW1iLCBhcnJheV9DLCAmbnVtYyk7CgkKCWZvciAoaT0wOyBpPG51bWM7IGkrKykgewoJCXByaW50ZigiJWQgIixhcnJheV9DW2ldKTsKCX0KCXByaW50ZigiXG7ntYLkuobjgZfjgb7jgZnjgIJcbiIpOwoJcmV0dXJuIDA7Cn0KCi8qIO+8kuOBpOOBrumFjeWIl+OCkuS6pOS6kuOBq++8k+OBpOebruOBrumFjeWIl+OBq+WFpeOCjOOCi+mWouaVsCAqLwp2b2lkIG1lcmdlYXJyYXkoaW50IGFycmF5X0FbXSwgaW50IG51bWEsIGludCBhcnJheV9CW10sIGludCBudW1iLCBpbnQgYXJyYXlfQ1tdLCBpbnQgKm51bWMpewoJaW50IGksIGosIGs7CglpZiAobnVtYSA8PSBudW1iKXsKCQlmb3IgKGk9MCwgaj0wOyBpPG51bWE7IGkrKyl7CgkJCWFycmF5X0NbaysrXSA9IGFycmF5X0FbaV07CgkJCWlmIChrPT1EQVRBTUFYQyl7CgkJCQlwcmludGYoIuODh+ODvOOCv+aVsOOBruS4iumZkCVk44KS6LaF44GI44G+44GX44Gf44CCXG4iLERBVEFNQVhDKTsKCQkJCWstPTI7CgkJCQlicmVhazsKCQkJfQoJCQlhcnJheV9DW2srK10gPSBhcnJheV9CW2orK107CgkJfQoJCWZvciAoaj1udW1hLCBrPW51bWEqMjsgajxudW1iOyBqKyspewoJCQlhcnJheV9DW2srK10gPSBhcnJheV9CW2pdOwoJCX0KCX0gZWxzZSB7ICAgLyogbnVtYSA+IG51bWIgKi8KCQlmb3IgKGk9MCwgaj0wOyBpPG51bWI7IGkrKyl7CgkJCWFycmF5X0NbaysrXSA9IGFycmF5X0FbaV07CgkJCWFycmF5X0NbaysrXSA9IGFycmF5X0JbaisrXTsKCQl9CgkJZm9yIChpPW51bWIsIGs9bnVtYioyOyBpPG51bWE7IGkrKyl7CgkJCWFycmF5X0NbaysrXSA9IGFycmF5X0FbaV07CgkJfQoJfQoJKm51bWMgPSBrOwp9