#include <stdio.h>
void sum(int kosuu, int data[], int *sum) {
int counter = 0;
int total = 0;
// counter が kosuu(要素数)に達するまで繰り返す
while (counter < kosuu) {
total = total + data[0]; // 現在指している要素を加算
data = data + 1; // ポインタを次へ進める
counter = counter + 1; // カウンタを +1
}
*sum = total; // 結果を変数へ書き込み
return;
}
int main(void) {
/* 配列1: 要素数 5 */
int array1[] = {10, 15, 8, 30, 7};
int ans1;
/* 配列2: 要素数 6 */
int array2[] = {10, 20, 30, 40, 50, 60};
int ans2;
/* サブルーチン呼び出し (要素数をそのまま渡す) */
sum(5, array1, &ans1);
sum(6, array2, &ans2);
/* 結果確認 */
printf("配列1の合計 ANS1: %d\n", ans1
); // 70 (#0046) printf("配列2の合計 ANS2: %d\n", ans2
); // 210 (#00D2)
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIHN1bShpbnQga29zdXUsIGludCBkYXRhW10sIGludCAqc3VtKSB7CiAgICBpbnQgY291bnRlciA9IDA7CiAgICBpbnQgdG90YWwgPSAwOwoKICAgIC8vIGNvdW50ZXIg44GMIGtvc3V177yI6KaB57Sg5pWw77yJ44Gr6YGU44GZ44KL44G+44Gn57mw44KK6L+U44GZCiAgICB3aGlsZSAoY291bnRlciA8IGtvc3V1KSB7CiAgICAgICAgdG90YWwgPSB0b3RhbCArIGRhdGFbMF07IC8vIOePvuWcqOaMh+OBl+OBpuOBhOOCi+imgee0oOOCkuWKoOeulwogICAgICAgIGRhdGEgPSBkYXRhICsgMTsgICAgICAgICAgLy8g44Od44Kk44Oz44K/44KS5qyh44G46YCy44KB44KLCiAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxOyAgICAvLyDjgqvjgqbjg7Pjgr/jgpIgKzEKICAgIH0KCiAgICAqc3VtID0gdG90YWw7ICAgICAgICAgICAgICAgICAvLyDntZDmnpzjgpLlpInmlbDjgbjmm7jjgY3ovrzjgb8KICAgIHJldHVybjsKfQoKaW50IG1haW4odm9pZCkgewogICAgLyog6YWN5YiXMTog6KaB57Sg5pWwIDUgKi8KICAgIGludCBhcnJheTFbXSA9IHsxMCwgMTUsIDgsIDMwLCA3fTsKICAgIGludCBhbnMxOwoKICAgIC8qIOmFjeWIlzI6IOimgee0oOaVsCA2ICovCiAgICBpbnQgYXJyYXkyW10gPSB7MTAsIDIwLCAzMCwgNDAsIDUwLCA2MH07CiAgICBpbnQgYW5zMjsKCiAgICAvKiDjgrXjg5bjg6vjg7zjg4Hjg7PlkbzjgbPlh7rjgZcgKOimgee0oOaVsOOCkuOBneOBruOBvuOBvua4oeOBmSkgKi8KICAgIHN1bSg1LCBhcnJheTEsICZhbnMxKTsKICAgIHN1bSg2LCBhcnJheTIsICZhbnMyKTsKCiAgICAvKiDntZDmnpznorroqo0gKi8KICAgIHByaW50Zigi6YWN5YiXMeOBruWQiOioiCBBTlMxOiAlZFxuIiwgYW5zMSk7IC8vIDcwICgjMDA0NikKICAgIHByaW50Zigi6YWN5YiXMuOBruWQiOioiCBBTlMyOiAlZFxuIiwgYW5zMik7IC8vIDIxMCAoIzAwRDIpCgogICAgcmV0dXJuIDA7Cn0KCgo=