2009年9月16日水曜日

第11回 while文③ 配列を使ったプログラム

お題:
n個の整数に関して数値をそれぞれ入力し、その整数の合計を求めるプログラム
①はじめに、整数の個数nを入力させる
②n個分の整数を入力する
③合計値を出す

プログラム実行例

整数の個数nを入力してください
n=3
a0=3
a1=4
a2=5
よって合計値は
3+4+5=12
です

必須事項
・while文、配列を使う事

注意事項
・合計値の式はwhile文で工夫
・配列の数え方 (a[0],a[1],a[2]・・・)
・配列は事前にたくさん用意すると対応できる (百個とか)

予備知識:
配列は、数値を入れる箱です。箱を用意する方法は

int = a[3];

と書きます。この場合、a[0],a[1],a[2]という3つの箱ができます。

配列は、例えばiという変数を用意した時、

a[i]

といった書き方が出来ます。iにはもちろん数字を入れなければなりませんが、iが1づつ増えていく場合、a[i]とするだけで、a[0],a[1],a[2]とiの数の配列が指定されることになり、便利です。

解答は9月18日に掲載します。それまでにプログラムを作成し、
・プログラム文
・その実行ファイル
をメールに添付して以下のアドレスに送ってください。

解答、質問はこちらまで
cosmo-cleaner@za.pial.jp

---------------------------------------------------------------

解答例

1

2
3
4

5
6

7
8
9
10
11
12

13

14
15
16
17
18
19
20
21

#include <stdio.h>

int main () {
    int a[100],i,n,sum;
    sum=0;

    puts("整数の個数nを入力してください");
    printf("n=");    scanf("%d",&n);

   i=0;
    while (i <= n-1) {
        printf("a%d = ",i);
        scanf("%d",&a[i]);
        i += 1;
    }


    puts("よって合計値は");

    i=0;
    while (i <= n-2) {
        printf("%d + ",a[i]);
        sum += a[i];
        i += 1;
    }

    printf("%d = %d",a[n-1],sum + a[n-1]);
}

実行例は次の通りです

整数の個数nを入力してください
n=10
a0 = 1
a1 = 2
a2 = 3
a3 = 4
a4 = 5
a5 = 6
a6 = 7
a7 = 8
a8 = 9
a9 = 10
よって合計値は
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

整数の個数nを入力してください
n=1
a0 = 1
よって合計は
1 = 1

解説

赤い部分(3行目)はa[100]とすることで、a[0]からa[99]までの変数を作っています。これは、入力する整数を記憶する変数になり、つまりこのプログラムは100個までの足し算が出来る事になります。

青い部分では、入力する数値を受け付けます。iが配列a[?]?を指定しています。iは初めは0でwhile文に入ります。printfでa0=と出力され、scanfでa[0]に数値が代入されます。
i += 1; は、i=i+1; と同じ意味になります。while文を実行すると最後にiが1増えます。
これが整数の個数n回だけ繰り返されます。a[0]からa[n-1]まで数字が入る事になります。

紫の部分では、計算式と合計値を表示します。while文で計算式をどんどん書いています。整数の個数n個分繰り返すと、計算式の最後に+が出てきてしまうので、while ( i <= n-2 ) { としています。n-1個分繰り返して、最後にa[n-1]だけを添えます
while文では計算式を書くと同時に合計値sumの計算をしています。while文はn-1回しか繰り返さないので、正確には
sum = a[0] + ・・・ + a[n-2]
で、本当の合計値はsum + a[n-1]となります。

答えられる範囲で質問いつでも受け付けます。
cosmo-cleaner@za.pial.jp

 

0 件のコメント:

コメントを投稿