wvogel日記

自分用の技術備忘録が多めです.

釣銭

ケンピハウスから0時前に帰宅ー
今日は冥王星、鮫、金さんとポトフを食べてきました
以外に人数が集まらなかった

夜、22時頃に懐かしのいっちゃん登場。
i-Padでビデオとか写真とか近況を鑑賞してきました


で今、家に帰ってきてから軽く書いてみた、おつりを求めるプログラム
おつりの枚数が最小になるようにしてあります。
あまり整形してないのでそれほど綺麗ではないです
for文使えば後半とかもっと綺麗になりますが、列挙体をなんとなく使いたかったのと、switch文を使いたかったという理由で。

#include<stdio.h>

enum En{One,Five,Ten,Fifty,Hundred,Fivehundred};

int main(){
int i,n,sellect,change;
int coin[6] = {0,0,0,0,0,0};
int goods[4] = {121,202,313,555};

n = 1200;
printf("1:121\n2:202\n3:313\n4;555\n\t select number\n--->");
sellect = 3;

change = n - goods[sellect - 1];

if(goods[sellect-1] > n){
	printf("お金が足りません\n");
	return 1;
}

printf("おつりは%d円です\n",change);

coin[Fivehundred] = change / 500;
if(coin[Fivehundred] != 0)
	change -= 500 * coin[Fivehundred];
coin[Hundred] = change / 100;
if(coin[Hundred] != 0)
	change -= 100 * coin[Hundred];
coin[Fifty] = change / 50;
if(coin[Fifty] != 0)
	change -= 50 * coin[Fifty];
coin[Ten] = change / 10;
if(coin[Ten] != 0)
	change -= 10 * coin[Ten];
coin[Five] = change / 5;
if(coin[Five] != 0)
	change -= 5 * coin[Five];
coin[One] = change;
for(i = 5; i >=0 ; i--){
	if(coin[i] != 0){
		switch(i){
			case One:printf("1円玉\t");break;
			case Five:printf("5円玉\t");break;
			case Ten:printf("10円玉\t");break;
			case Fifty:printf("50円玉\t");break;
			case Hundred:printf("100円玉\t");break;
			case Fivehundred:printf("500円玉\t");break;
		}
		printf("-----%d\n",coin[i]);
	}
}
return 0;
}			

それと、昼間のダーリントン接続ですが
おそらく、増幅しすぎて発生したノイズのようなものではないかと
実用するにはあまりにも増幅度が高いので改善する必要有


Haskell使ったパーサ作りをそろそろ本気で始めたい