画像(logo)

HOME/[C言語]サンプルプログラム集 目次/合計

広告

[C言語 サンプルプログラム集]
合計

広告

↓発売日:2018年09月22日↓

たった1日で基本が身に付く! C言語 超入門

新品価格
¥2,225から
(2018/10/8 23:10時点)

目次へ戻る

合計

今回は配列など複数の要素の合計を出します。

普通に合計

#include <stdio.h>

int main(){
	int ary[5] = {1,2,3,4,5};
	int sum = 0;
	int i;

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

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

	printf("\n");
	
	printf("sum = %d\n",sum);

	return 0;
}

■実行結果■

画像(cs_2_1)

配列「ary」の全ての要素の合計を普通に出します。

まずは合計を格納する為の変数を用意します。

int sum = 0;

そしてここに繰り返しの「for」文を使って毎回足し合わせるようなカタチで各要素を一つ足して一つ進めてを繰り返します。

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

これで合計値の算出は完了です。

合計関数

#include <stdio.h>

int my_sum(int* ,int);

int main(){
	int ary[5] = {1,2,3,4,5};
	int sum = 0;
	int i;

	sum = my_sum(ary,sizeof(ary) / sizeof(int));

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

	printf("\n");

	printf("sum = %d\n",sum);	

	return 0;
}

int my_sum(int* ary,int size){
	int sum = 0;
	int i;
	
	for(i=0;i<size;i++){
		sum += *(ary + i);
	}

	return sum;
}

■実行結果■

画像(cs_2_2)

合計値を出す関数を作ります。

int my_sum(int* ary,int size){
	int sum = 0;
	int i;
	
	for(i=0;i<size;i++){
		sum += *(ary + i);
	}

	return sum;
}

ここで必要な情報は合計を出す配列とそのサイズなので

int my_sum(int* ary,int size)

引数はこちらになります。

あとは同じように合計を入れるための変数を用意して足し合わせていくだけです。

引数に開始番号、終了番号などを入れるようなカタチにして

int my_sum(int* ary,int start,int end)

その範囲だけを足し合わせるようにすれば

for(i=start;i<end;i++){
	sum += *(ary + i);
}

部分的な合計値を出す事も可能です。

配列などを渡している時はバッファオーバーしないように配列サイズの監視も重要です。

広告

構造体の合計値

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

struct STUDENT{
	char name[128];
	int money;
};

struct STUDENT set_data(const char* , int);
int my_sum2(struct STUDENT* ,int);

int main(){
	struct STUDENT student[5];
	int sum = 0;
	int i;

	student[0] = set_data("tanaka",1000);
	student[1] = set_data("suzuki",2000);
	student[2] = set_data("satou",3000);
	student[3] = set_data("saitou",4000);
	student[4] = set_data("watanabe",5000);

	sum = my_sum2(student,sizeof(student) / sizeof(struct STUDENT));

	for(i=0;i<5;i++){
		printf("name:%s money:%d\n",student[i].name,student[i].money);
	}

	printf("sum = %d\n",sum);

	return 0;
}

struct STUDENT set_data(const char* name, int money){
	struct STUDENT tmp;
	strcpy(tmp.name,name);
	tmp.money = money;
	return tmp;
}

int my_sum2(struct STUDENT* ary,int size){
	int sum = 0;
	int i;
	
	for(i=0;i<size;i++){
		sum += (ary + i)->money;
	}

	return sum;
}

■実行結果■

画像(cs_2_3)

より実用的なプログラムにおいては構造体の特定の要素の合計値を出す事もあるかもしれません。

struct STUDENT{
	char name[128];
	int money;
};

生徒の所持金の合計のような感じで所持金にあたるこちらの構造体のメンバ「money」の合計を出します。

int my_sum2(struct STUDENT* ary,int size){
	int sum = 0;
	int i;
	
	for(i=0;i<size;i++){
		sum += (ary + i)->money;
	}

	return sum;
}

今回は構造体の配列を渡すので引数は

int my_sum2(struct STUDENT* ary,int size){
}

構造体のポインタとその配列のサイズになりますね。

後は同じように一つずつ足し合わせていくだけです。

for(i=0;i<size;i++){
	sum += (ary + i)->money;
}

この時に構造体の各メンバにアクセスするには

(ary + i)->money

ポインタで受け取っているのでアロー演算子になる事に注意です!

□ページの先頭へ□

□目次へ戻る□

□HOME□

広告

↓発売日:2016年02月29日↓

12歳からはじめる ゼロからのC言語 ゲームプログラミング教室

新品価格
¥2,462から
(2018/10/8 23:25時点)

↓発売日:2018年06月22日↓

スッキリわかるC言語入門

新品価格
¥2,916から
(2018/10/8 23:15時点)

↓発売日:2018年03月09日↓

C言語本格入門 ~基礎知識からコンピュータの本質まで

新品価格
¥3,218から
(2018/10/8 23:16時点)

↓発売日:2017年06月14日↓

やさしいC 第5版 (「やさしい」シリーズ)

新品価格
¥2,700から
(2018/10/8 23:17時点)

↓発売日:2018年05月21日↓

作って身につく C言語入門

新品価格
¥2,462から
(2018/10/8 23:18時点)

↓発売日:2017年12月07日↓

新・標準プログラマーズライブラリ C言語 ポインタ完全制覇

新品価格
¥2,678から
(2018/10/8 23:19時点)

↓発売日:2017年02月08日↓

新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ)

新品価格
¥2,700から
(2018/10/8 23:20時点)

↓発売日:2017年09月26日↓

かんたん C言語 [改訂2版] (プログラミングの教科書)

新品価格
¥2,916から
(2018/10/8 23:22時点)