うまく加算できません・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
カメロンパン
記事: 21
登録日時: 8年前
連絡を取る:

うまく加算できません・・・

#1

投稿記事 by カメロンパン » 7年前

簡単な料金自動集計合計プログラムを作っています。
基本的には、年齢を入力して金額を表示。
それを繰り返して最終的には集計して表示するプログラムです。
一応作成してみたのですが、これだと集計が何人やっても最後の1人分しか表示されません。

コード:

 
#include<stdio.h>
#pragma warning(disable : 4996)

int main(void)
{
	int age, total, i=1, num, zero=0;
	//age=年齢 total=すべての合計金額 i=繰り返し・終了判定
	//金額 3歳=無料 4歳~12歳=250円 13歳以上=400円

	printf("料金表\n");
	printf("3歳以下   無料\n4歳~12歳  250円\n13歳以上  400円\n");
	//料金表

	while (i==1)
	{

	printf("年齢を打ち込んで下さい。\n");
	scanf ("%d",&age);
	//年齢打ち込み

	
	if(age>=13)
		{

			printf("料金は400円です。\n");
			total=zero+400;
			num=zero+1;
			printf("このまま続けますか?\n続けるならば1を。終了するならば2を押して下さい。");
			scanf("%d",&i);
		}
		else
			if(age<=3)
			{
				printf("料金は無料です。\n");
				num=zero+1;
				printf("このまま続けますか?\n続けるならば1を。終了するならば2を押して下さい。");
				scanf("%d",&i);
			}
			else
				{
					printf("料金250円です。\n");
					total=zero+250;
					num=zero+1;
					printf("このまま続けますか?\n続けるならば1を。終了するならば2を押して下さい。");
					scanf("%d",&i);
					
					
				}

	}
			printf("合計人数:%02d人\n合計金額:%04d円\n\n",num,total);
		return 0;
}
なので、以下の様に+=を使用してみたのですが、デバッグ時にErrorがでて強制終了してしまいます。

#include<stdio.h>
#pragma warning(disable : 4996)

int main(void)
{
int age, total, i=1, num;
//age=年齢 total=すべての合計金額 i=繰り返し・終了判定
//金額 3歳=無料 4歳~12歳=250円 13歳以上=400円

printf("料金表\n");
printf("3歳以下   無料\n4歳~12歳  250円\n13歳以上  400円\n");
//料金表

while (i==1)
{

printf("年齢を打ち込んで下さい。\n");
scanf ("%d",&age);
//年齢打ち込み


if(age>=13)
{

printf("料金は400円です。\n");
total+=400;
num+=1;
printf("このまま続けますか?\n続けるならば1を。終了するならば2を押して下さい。");
scanf("%d",&i);
}
else
if(age<=3)
{
printf("料金は無料です。\n");
num+=1;
printf("このまま続けますか?\n続けるならば1を。終了するならば2を押して下さい。");
scanf("%d",&i);
}
else
{
printf("料金250円です。\n");
total+=250;
num+=1;
printf("このまま続けますか?\n続けるならば1を。終了するならば2を押して下さい。");
scanf("%d",&i);


}

}
printf("合計人数:%02d人\n合計金額:%04d円\n\n",num,total);
return 0;
}

どうしたら、ちゃんと集計ができるようになりますか?

カメロンパン
記事: 21
登録日時: 8年前
連絡を取る:

Re: うまく加算できません・・・

#2

投稿記事 by カメロンパン » 7年前

すいません、したのソースに[coe=C] [/code]入れ忘れました・・・

コード:

 
#include<stdio.h>
#pragma warning(disable : 4996)

int main(void)
{
int age, total, i=1, num;
//age=年齢 total=すべての合計金額 i=繰り返し・終了判定
//金額 3歳=無料 4歳~12歳=250円 13歳以上=400円

printf("料金表\n");
printf("3歳以下   無料\n4歳~12歳  250円\n13歳以上  400円\n");
//料金表

while (i==1)
{

printf("年齢を打ち込んで下さい。\n");
scanf ("%d",&age);
//年齢打ち込み


if(age>=13)
{

printf("料金は400円です。\n");
total+=400;
num+=1;
printf("このまま続けますか?\n続けるならば1を。終了するならば2を押して下さい。");
scanf("%d",&i);
}
else
if(age<=3)
{
printf("料金は無料です。\n");
num+=1;
printf("このまま続けますか?\n続けるならば1を。終了するならば2を押して下さい。");
scanf("%d",&i);
}
else
{
printf("料金250円です。\n");
total+=250;
num+=1;
printf("このまま続けますか?\n続けるならば1を。終了するならば2を押して下さい。");
scanf("%d",&i);


}

}
printf("合計人数:%02d人\n合計金額:%04d円\n\n",num,total);
return 0;
}

エクレかわああ

Re: うまく加算できません・・・

#3

投稿記事 by エクレかわああ » 7年前

最初にnumとtotalに0を代入しといてください。
何か数字を入れて初期化しておかないと、変数にはデタラメな数字が入っています。

num+=1だと

num = num + 1なので

numという初期化されてない変数にアクセスすることになりエラーになります。

カメロンパン
記事: 21
登録日時: 8年前
連絡を取る:

Re: うまく加算できません・・・

#4

投稿記事 by カメロンパン » 7年前

ありがとうございます!
無事成功しました。
これからは初期化も忘れずにやっていこうと思います^^;

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: うまく加算できません・・・

#5

投稿記事 by softya(ソフト屋) » 7年前

カメロンパン さんが書きました:ありがとうございます!
無事成功しました。
これからは初期化も忘れずにやっていこうと思います^^;
インデントがちゃんと出来ていませんので、初心者だからこそちゃんとやることを心がけられると良いと思います。
こちらを参考にして下さい。
「mixcpp/投稿前チェックリスト - PukiWiki」
http://uchan.net/w/index.php?mixcpp%2F% ... 5%B9%A5%C8
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る