自販機のプログラムを作っているのですが入力をした後の出力が思い通りになってくれません。
例(こうなるはず)
1(○)130
2(○)120
3(○)200
4(○)80
5(○)150
6(○)110
釣銭切れ(○)
お金と飲み物番号を入力してください
1000の数 500の数 100の数 50の数 10の数 飲み物番号
0 0 2 0 0 1
ー状態表示エリアー
飲み物1が出ます
お釣り
150
210
が出ます
実際の出力結果
1(○)130
2(○)120
3(○)200
4(○)80
5(○)150
6(○)110
釣銭切れ(○)
お金と飲み物番号を入力してください
1000の数 500の数 100の数 50の数 10の数 飲み物番号
0 0 2 0 0 1
ー状態表示エリアー
つり銭切れです
お金200円が戻ります
c
1#include<stdio.h> 2int main(){ 3 4 int price[7]={0,130,120,200,80,150,110}; 5 int stock[7]={0,3,5,10,4,8,6}; 6 int i,take; 7 int coin[4]={10,10,10,10}; 8 int hideo1000,in1000,in500,in100,in50,in10; 9 int c500=0,c100=0,c50=0,c10=0; 10 int ex,exc,payoff=0,num; 11 int issue[6]={0,0,0,0,0,0}; 12 int spare=0; 13 int in[4]={0,1,2,3}; 14/* 15priceは各ドリンクの金額 16stockは各ドリンクの残り個数 17iはカウント変数 18coinは各コインの枚数 19hideo1000は1000円札の枚数 20in1000は各コインが購入時に入れられた枚数を入れる箱 21c500は各コインが実際に購入時に入れられた枚数 22exはお釣り(プログラミング内で変わる) 23excはお釣り(定数) 24payoffは総売り上げ金額 25numは購入したドリンク番号 26issueは各ドリンクが売れた個数 27takeはその回に売り上げた金額 28spareはつり切れの場合を判定するための変数 29*/ 30 while(1){ 31 32 for(i=1;i<=6;i++){ 33 if(stock[i]>0){ 34 printf("%d(○)%d\n",i,price[i]); 35 } 36 else{ 37 printf("%d(×)%d\n",i,price[i]); 38 } 39 } 40 41 for(i=0;i<=3;i++){ 42 if(in[i]<=5){ 43 spare=1; 44 } 45 } 46 if(spare==1){ 47 printf("釣銭切れ(○)\n"); 48 } 49 else{ 50 printf("釣銭切れ(×)\n"); 51 } 52 53 printf("お金と飲み物番号を入力してください\n"); 54 55 printf("1000の数 500の数 100の数 50の数 10の数 飲み物番号\n"); 56 57 if(scanf("%d %d %d %d %d %d",&in1000,&in500,&in100,&in50,&in10,&num)==EOF)break; 58 59 printf("ー状態表示エリアー\n"); 60 61 if(!((num==1)||(num==2)||(num==3)||(num==4)||(num==5)||(num==6))){ 62 63 printf("存在しない飲み物番号です\n"); 64 65 printf("お金%d円が戻ります\n\n",1000*in1000+500*in500+100*in100+50*in50+10*in10); 66 67 continue; 68 } 69 if(stock[num]==0){ 70 71 printf("飲み物%dは売り切れです\n",num); 72 73 printf("お金%d円が戻ります\n",1000*in1000+500*in500+100*in100+50*in50+10*in10); 74 75 printf("\n"); 76 continue; 77 } 78 79 else if(1000*in1000+500*in500+100*in100+50*in50+10*in10<issue[num]){ 80 81 printf("投入金額が足りません\nお金%d円が戻ります\n",1000*in1000+500*in500+100*in100+50*in50+10*in10); 82 83 printf("\n"); 84 continue; 85 } 86 87 else if(spare==1){ 88 89 if(1000*in1000+500*in500+100*in100+50*in50+10*in10==price[num]){ 90 91 printf("飲み物%dが出ます\n",stock[num]); 92 93 printf("お釣りはありません\n"); 94 stock[num]=stock[num]-1; 95 continue; 96 } 97 else{ 98 printf("つり銭切れです\n"); 99 100 printf("お金%d円が戻ります\n",1000*in1000+500*in500+100*in100+50*in50+10*in10); 101 102 printf("\n"); 103 continue; 104 } 105 } 106 107 else{ 108 stock[num]-=1; 109 110 ex=(1000*in1000+500*in500+100*in100+50*in50+10*in10)-coin[num]; 111 112 exc=ex; 113 114 spare=coin[num]; 115 116 if(ex-500>=0){ 117 c500++; 118 119 ex-=500; 120 } 121 while(1){ 122 if(ex-100>=0){ 123 124 c100++; 125 126 ex-=100; 127 } 128 else break; 129 } 130 131 while(1){ 132 133 if(ex-50>=0){ 134 135 c50++; 136 137 ex-=50; 138 } 139 else break; 140 } 141 142 c10=ex/10; 143 144 if(exc>0){ 145 146 printf("飲み物%dが出ます\nお釣り\n",num); 147 148 if(c500>0){printf("%d*500円\n",c500);} 149 150 if(c100>0){printf("%d*100円\n",c100);} 151 152 if(c50>0){printf("%d*50円\n",c50);} 153 154 if(c10>0){printf("%d*10円\n",c10);} 155 156 printf("が出ます\n"); 157 printf("\n"); 158 159 stock[num]-=1; 160 } 161 else{ 162 163 printf("飲み物%dが出ます\n",num); 164 printf("お釣りはありません\n"); 165 printf("\n"); 166 stock[num]-=1; 167 } 168 169 in[0]=in[0]+in500-c500; 170 in[1]=in[1]+in100-c100; 171 in[2]=in[2]+in50-c50; 172 in[3]=in[3]+in10-c10; 173 issue[num]+=1; 174 take+=payoff; 175 hideo1000+=in1000; 176 } 177 } 178 179 180printf("ー売り上げサマリー\n"); 181 182printf("売れた飲み物の番号毎の個数\n"); 183 184printf("1:%d\n2:%d\n3:%d\n4:%d\n5:%d\n6:%d\n",issue[0],issue[1],issue[2],issue[3],issue[4],issue[5]); 185 186printf("\n"); 187 188printf("総売上額\n%d円\n",payoff); 189 190printf("\n"); 191 192printf("各金種毎の保有枚数\n1000円:%d\n500円:%d\n100円:%d\n50円:%d\n10円:%d\n",hideo1000,in[0],in[1],in[2],in[3]); 193 194 195return 0; 196} 197
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/15 01:10