みけCATのにっき(仮)
つれづれなるまゝに、日くらし、PCにむかひて、心に移りゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。
(本当か!?)
出典

クレジットカードの支払額を計算

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

クレジットカードの支払額を計算

投稿記事 by みけCAT » 14年前

最近家庭基礎でやったので作ってみました。
間違っていても責任は負いません。
デバッグに協力してください。(笑い)

CODE:

#include 

void calcbunkatu();
void calcribo();

int main(void) {
	int mode;
	int onemore;
	puts("クレジットカードの支払額を計算します。");
	puts("実際の支払額と違っていても責任は負いません。");
	start:
	puts("モードを選んでください。");
	puts("0:分割払い");
	puts("1:リボルビング");
	puts("2:終了");
	printf(">");
	scanf("%d",&mode);
	calc:
	if(mode==0)calcbunkatu();
	else if(mode==1)calcribo();
	else if(mode==2)return 0;
	else {
		puts("まじめに入力してください。");
		goto start;
	}
	calcato:
	puts("もう一度やりますか?");
	puts("0:同じモードでもう一回");
	puts("1:モードを選びなおす");
	puts("2:終了");
	printf(">");
	scanf("%d",&onemore);
	if(onemore==0)goto calc;
	else if(onemore==1)goto start;
	else if(onemore==2)return 0;
	else {
		puts("まじめに入力してください。");
		goto calcato;
	}
	return 0;
}

void calcbunkatu() {
	double tesuuryou;
	int daikin;
	int sougaku;
	int kaisuu;
	int ikkaiatari;
	int harautesuuryou;
	printf("商品の価格(円)を入力してください。\n>");
	scanf("%d",&daikin);
	printf("100円あたりの手数料(円)を入力してください。\n>");
	scanf("%lf",&tesuuryou);
	printf("何回払いですか?\n>");
	scanf("%d",&kaisuu);
	harautesuuryou=daikin*tesuuryou/100;
	sougaku=daikin+harautesuuryou;
	ikkaiatari=sougaku/kaisuu;
	ikkaiatari-=ikkaiatari%100;
	printf("手数料:%d円\n",harautesuuryou);
	printf("支払う総額:%d円\n",sougaku);
	printf("1回目に払う金額:%d円\n",sougaku-ikkaiatari*(kaisuu-1));
	printf("2回目以降に払う金額:%d円\n",ikkaiatari);
}

void calcribo() {
	int nokori;
	double nenritu;
	int tesuuryou;
	int ikkaiatari;
	int nankai;
	int kaesu;
	int sougaku;
	int displog;
	printf("商品の価格(円)を入力して下さい。\n>");
	scanf("%d",&nokori);
	printf("1回に払う金額(円)を入力して下さい。\n>");
	scanf("%d",&ikkaiatari);
	printf("実質年率(%)を入力して下さい。\n>");
	scanf("%lf",&nenritu);
	printf("詳細なログを出力しますか?\n");
	printf("0:出力しない 0以外の整数:出力する\n>");
	scanf("%d",&displog);
	nankai=0;
	sougaku=0;
	while(nokori>=0) {
		nankai++;
		tesuuryou=nokori*nenritu/100/12;
		kaesu=ikkaiatari-tesuuryou;
		sougaku+=ikkaiatari;
		nokori-=kaesu;
		if(displog)
			printf("%d回目 手数料:%d円 返済額:%d円 残額:%d円\n",
			nankai,tesuuryou,kaesu,nokori); 
		if(kaesu<=0) {
			puts("返済額が0かマイナスです。");
			puts("無限ループの可能性があるため処理を中止します。");
			return;
		}
	}
	printf("%d回目で返し終わりました。\n",nankai);
	printf("支払い総額:%d円\n",sougaku);
}

コメントはまだありません。