[PR]解禁!サクラのいない直メなび:※男女タダで遊べる、大人のためのコミュ


データ構造(配列2)★


では、5つのデータを入力し、合計を表示するプログラムを考えてみます。

以前、for文の説明で作りましたが、配列を使って書き換えます。


<sample program 062-01>

#include <stdio.h>

int main( void )
{
    int data[5];

    int i;

    int sum = 0;

    for( i=0; i<5; i++ ) {
        printf( "整数を入力してください:" );
        scanf( "%d", &data[i] );
        sum += data[i];
    }

    printf( "合計は%dです。\n", sum );
    
    return 0;
}

<実行結果 VC++ Express Edition>

     数値を入力してください:5
数値を入力してください:3
数値を入力してください:5
数値を入力してください:3
数値を入力してください:5
合計は21です。 続行するには何かキーを押してください・・・

配列の各要素にscanfを使ってキーボードから入力する際には、通常の変数と同じように「&」を付けます。

このプログラムでは、入力しながら同時に合計も計算していますが、下のように書き換えることもできます。


<sample program 062-02>

#include <stdio.h>

int main( void )
{
    int data[5];

    int i;

    int sum = 0;

    for( i=0; i<5; i++ ) {
        printf( "整数を入力してください:" );
        scanf( "%d", &data[i] );
    }

    for( i=0; i<5; i++ ) {
        sum += data[i];
    }

    printf( "合計は%dです。\n", sum );
    
    return 0;
}

<実行結果 VC++ Express Edition>

     数値を入力してください:5
数値を入力してください:3
数値を入力してください:5
数値を入力してください:3
数値を入力してください:5
合計は21です。 続行するには何かキーを押してください・・・

実行結果は同じように表示されますが、入力のループとは別に合計のループが作ってあります

配列を使わない場合入力と同時に合計も計算しなければ、次のデータが入力されるため、変数の中に入っている値が消えてしまいます。

しかし、配列を使った場合、入力したデータはすべて残っていますので、後から計算することもできるようになります。

今回は合計計算なので、入力しながら計算も可能ですが、入力と処理を分けてプログラムを書く必要がある場合、入力データを残しておかなければなりません。

そのような場合、配列が役に立つのです。(具体的には後々説明します)


では、次に配列の初期化について書きます。

変数を初期化する場合、次のように書くことができます。


<sample program 062-03>

#include <stdio.h>

int main( void )
{
    int a = 13;

    printf( "変数aの中身は%dです。\n", a );
    
    return 0;
}

<実行結果 VC++ Express Edition>

     変数aの中身は13です。
     続行するには何かキーを押してください・・・

変数宣言のすぐ後に「=」を付けて、値を代入します。

配列も同じように初期化が可能です。


<sample program 062-04>

#include <stdio.h>

int main( void )
{
    int i;

    int data[5] = { 3, 6, 4, 2, 1 };

    for( i=0; i<5; i++ ) {
        printf( "data[%d] = %d\n", i, data[i] );
    }

    return 0;
}

<実行結果 VC++ Express Edition>

     data[0] = 3
data[1] = 6
data[2] = 4
data[3] = 2
data[4] = 1
続行するには何かキーを押してください・・・

配列の宣言のすぐ後に「{}」を付けて、各要素に代入する値を「,(コンマ)」で区切って書きます。

次のように書いた場合はエラーになります。


<sample program 062-05>

#include <stdio.h>

int main( void )
{
    int i;

    int data[5] = { 3, 6, 4, 2, 1, 5 };

    for( i=0; i<5; i++ ) {
        printf( "data[%d] = %d\n", i, data[i] );
    }

    return 0;
}

<実行結果 VC++ Express Edition>

     エラー内容 main.cpp(7) : error C2078: 初期化子の数が多すぎます。

配列の要素数は「5」なのに、6個分のデータを入れようとしているためです。

それでは、次のように書いた場合はどうなるのでしょうか。


<sample program 062-06>

#include <stdio.h>

int main( void )
{
    int i;

    int data[5] = { 3, 6 };

    for( i=0; i<5; i++ ) {
        printf( "data[%d] = %d\n", i, data[i] );
    }

    return 0;
}

<実行結果 VC++ Express Edition>

     data[0] = 3
data[1] = 6
data[2] = 0
data[3] = 0
data[4] = 0
続行するには何かキーを押してください・・・

初期化の部分には「3」と「6」しか書いていませんが、中身を見ると残りの部分には「0」が入っています。

初期化するデータが多い場合はエラーになりますが、少ない場合は残った部分に「0」が入ります

ただし、初期化しなかった場合の要素の中身は変数と同じく「不定」です。


次へ

戻る

目次へ


[PR]生年月日で2010年占い鑑定:初回無料!貴女の運命運勢を占う