/* 課題073 */
/* 配列に入れられた値を交互にマージして表示 */
/* (配列を引数とする関数) */
/* 2025.07.16 sakurauchiyuto */
#include <stdio.h>
#define DATAMAX 20
void mergearray(int array_A[], int numa, int array_B[], int numb, int array_C[], int numc);
/* メイン関数 */
int main(void) {
int numa, numb, numc; /* 各配列のデータ数 */
int array_A[DATAMAX]; /* Aに入力されたデータを格納 */
int array_B[DATAMAX]; /* Bに入力されたデータを格納 */
int array_C[DATAMAX]; /* マージ結果を格納する配列 */
int i;
/* 配列Aの入力 */
printf("1つ目の配列を入力してください。終了は 0 を入力してください。\n"); numa = 0;
scanf("%d", &array_A
[numa
]); while(array_A[numa] != 0) {
numa++;
if (numa == DATAMAX) {
printf("データ数の上限 %d を超えました。\n", DATAMAX
); break;
}
scanf("%d", &array_A
[numa
]); }
/* 配列Bの入力 */
printf("2つ目の配列を入力してください。終了は 0 を入力してください。\n"); numb = 0;
scanf("%d", &array_B
[numb
]); while(array_B[numb] != 0) {
numb++;
if (numb == DATAMAX) {
printf("データ数の上限 %d を超えました。\n", DATAMAX
); break;
}
scanf("%d", &array_B
[numb
]); }
/* マージ関数の呼び出し */
mergearray(array_A, numa, array_B, numb, array_C, DATAMAX * 2);
/* マージ結果を表示 */
numc = numa + numb;
if (numc > DATAMAX * 2) {
numc = DATAMAX * 2;
}
for (i = 0; i < numc; i++) {
}
return 0;
}
/* 配列を交互にマージする関数 */
void mergearray(int array_A[], int numa, int array_B[], int numb, int array_C[], int numc) {
int i = 0, j = 0, k = 0;
while (i < numa && j < numb && k < numc) {
array_C[k++] = array_A[i++];
if (k >= numc) break;
array_C[k++] = array_B[j++];
}
while (i < numa && k < numc) {
array_C[k++] = array_A[i++];
}
while (j < numb && k < numc) {
array_C[k++] = array_B[j++];
}
}
Lyog6Kqy6aGMMDczICovCi8qIOmFjeWIl+OBq+WFpeOCjOOCieOCjOOBn+WApOOCkuS6pOS6kuOBq+ODnuODvOOCuOOBl+OBpuihqOekuiAqLwovKiAo6YWN5YiX44KS5byV5pWw44Go44GZ44KL6Zai5pWwKSAqLwovKiAyMDI1LjA3LjE2IHNha3VyYXVjaGl5dXRvICovCiNpbmNsdWRlIDxzdGRpby5oPgojZGVmaW5lIERBVEFNQVggMjAKCnZvaWQgbWVyZ2VhcnJheShpbnQgYXJyYXlfQVtdLCBpbnQgbnVtYSwgaW50IGFycmF5X0JbXSwgaW50IG51bWIsIGludCBhcnJheV9DW10sIGludCBudW1jKTsKCi8qIOODoeOCpOODs+mWouaVsCAqLwppbnQgbWFpbih2b2lkKSB7CglpbnQgbnVtYSwgbnVtYiwgbnVtYzsgLyog5ZCE6YWN5YiX44Gu44OH44O844K/5pWwICovCglpbnQgYXJyYXlfQVtEQVRBTUFYXTsgLyogQeOBq+WFpeWKm+OBleOCjOOBn+ODh+ODvOOCv+OCkuagvOe0jSAqLwoJaW50IGFycmF5X0JbREFUQU1BWF07IC8qIELjgavlhaXlipvjgZXjgozjgZ/jg4fjg7zjgr/jgpLmoLzntI0gKi8KCWludCBhcnJheV9DW0RBVEFNQVhdOyAvKiDjg57jg7zjgrjntZDmnpzjgpLmoLzntI3jgZnjgovphY3liJcgKi8KCWludCBpOwoKCS8qIOmFjeWIl0Hjga7lhaXlipsgKi8KCXByaW50ZigiMeOBpOebruOBrumFjeWIl+OCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAgue1guS6huOBryAwIOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAglxuIik7CgludW1hID0gMDsKCXNjYW5mKCIlZCIsICZhcnJheV9BW251bWFdKTsKCXdoaWxlKGFycmF5X0FbbnVtYV0gIT0gMCkgewoJCW51bWErKzsKCQlpZiAobnVtYSA9PSBEQVRBTUFYKSB7CgkJCXByaW50Zigi44OH44O844K/5pWw44Gu5LiK6ZmQICVkIOOCkui2heOBiOOBvuOBl+OBn+OAglxuIiwgREFUQU1BWCk7CgkJCWJyZWFrOwoJCX0KCQlzY2FuZigiJWQiLCAmYXJyYXlfQVtudW1hXSk7Cgl9CgoJLyog6YWN5YiXQuOBruWFpeWKmyAqLwoJcHJpbnRmKCIy44Gk55uu44Gu6YWN5YiX44KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CC57WC5LqG44GvIDAg44KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CCXG4iKTsKCW51bWIgPSAwOwoJc2NhbmYoIiVkIiwgJmFycmF5X0JbbnVtYl0pOwoJd2hpbGUoYXJyYXlfQltudW1iXSAhPSAwKSB7CgkJbnVtYisrOwoJCWlmIChudW1iID09IERBVEFNQVgpIHsKCQkJcHJpbnRmKCLjg4fjg7zjgr/mlbDjga7kuIrpmZAgJWQg44KS6LaF44GI44G+44GX44Gf44CCXG4iLCBEQVRBTUFYKTsKCQkJYnJlYWs7CgkJfQoJCXNjYW5mKCIlZCIsICZhcnJheV9CW251bWJdKTsKCX0KCgkvKiDjg57jg7zjgrjplqLmlbDjga7lkbzjgbPlh7rjgZcgKi8KCW1lcmdlYXJyYXkoYXJyYXlfQSwgbnVtYSwgYXJyYXlfQiwgbnVtYiwgYXJyYXlfQywgREFUQU1BWCAqIDIpOwoKCS8qIOODnuODvOOCuOe1kOaenOOCkuihqOekuiAqLwoJcHJpbnRmKCLjg57jg7zjgrjntZDmnpzjga/ku6XkuIvjga7pgJrjgorjgafjgZnjgIJcbiIpOwoJbnVtYyA9IG51bWEgKyBudW1iOwoJaWYgKG51bWMgPiBEQVRBTUFYICogMikgewoJCW51bWMgPSBEQVRBTUFYICogMjsKCX0KCglmb3IgKGkgPSAwOyBpIDwgbnVtYzsgaSsrKSB7CgkJcHJpbnRmKCIlZCAiLCBhcnJheV9DW2ldKTsKCX0KCXByaW50ZigiXG7ntYLkuobjgZfjgb7jgZnjgIJcbiIpOwoKCXJldHVybiAwOwp9CgovKiDphY3liJfjgpLkuqTkupLjgavjg57jg7zjgrjjgZnjgovplqLmlbAgKi8Kdm9pZCBtZXJnZWFycmF5KGludCBhcnJheV9BW10sIGludCBudW1hLCBpbnQgYXJyYXlfQltdLCBpbnQgbnVtYiwgaW50IGFycmF5X0NbXSwgaW50IG51bWMpIHsKCWludCBpID0gMCwgaiA9IDAsIGsgPSAwOwoKCXdoaWxlIChpIDwgbnVtYSAmJiBqIDwgbnVtYiAmJiBrIDwgbnVtYykgewoJCWFycmF5X0NbaysrXSA9IGFycmF5X0FbaSsrXTsKCQlpZiAoayA+PSBudW1jKSBicmVhazsKCQlhcnJheV9DW2srK10gPSBhcnJheV9CW2orK107Cgl9CgoJd2hpbGUgKGkgPCBudW1hICYmIGsgPCBudW1jKSB7CgkJYXJyYXlfQ1trKytdID0gYXJyYXlfQVtpKytdOwoJfQoKCXdoaWxlIChqIDwgbnVtYiAmJiBrIDwgbnVtYykgewoJCWFycmF5X0NbaysrXSA9IGFycmF5X0JbaisrXTsKCX0KfQ==