|
電腦遊戲製作開發設計論壇 任何可以在PC上跑的遊戲都可以討論,主要以遊戲之製作開發為主軸,希望讓台灣的遊戲人有個討論、交流、教學、經驗傳承的園地
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
恆焱 偶而上來逛逛的過客
註冊時間: 2008-03-15 文章: 5 來自: 地球 0.00 果凍幣
|
發表於: 2008-3-15, PM 5:37 星期六 文章主題: 關於C++販賣機問題.. |
|
|
代碼: | #include<stdio.h>
#include<stdlib.h>
int main(void)
{
int a=100,b=200,c=300,d=400,money,choice;
printf("歡迎光您 自動販賣機\n");
printf("請投幣=>");
scanf("%d",&money);
printf("1.果汁%d\t2.牛奶%d\n",a,b);
printf("3.熱可可%d\t4.奶茶%d\n",c,d);
printf("選單\n");
scanf("%d",&choice);
switch(choice){
case 1:
if(money>=a)printf("您的果汁 剩於%d元\n",money-a);
if(money<a) printf("錢不夠啦 重新輸入\n");
break;
case 2:
if(money>=b)printf("您的牛奶 剩於%d元\n",money-b);
if(money<b) printf("錢不夠啦 重新輸入\n");
break;
case 3:
if(money>=c)printf("您的熱可可 剩於%d元\n",money-c);
if(money<c) printf("錢不夠啦 重新輸入\n");
break;
case 4:
if(money>=d)printf("您的奶茶 剩於%d元\n",money-d);
if(money<d) printf("錢不夠啦 重新輸入\n");
break;
system("PAUSE");
return 0;
} |
有2問題一直想不出來
問題1. 我想當我選完我要的飲料找完零錢,
我想要多增加"是否在投一次Y\N"這項內容
當選再投一次這項條件並用剩餘的零錢。
問題2.當我輸入金錢完,跳出選單故意選沒有裡面內容按鍵,
然後再讓我選一次選單。
想唯一方法想用do....while試做,還是沒辦法。
這問題想很久,請幫我解答。
順便做個以上2問題條件解釋@@" |
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2008-3-15, PM 8:36 星期六 文章主題: Re: 關於C++販賣機問題.. |
|
|
1.
再投一次要再輸入money嗎?
要的話,就do放到printf("歡迎光臨自動販賣機\n");上面
while放到system("PAUSE");之前
條件就是讀取到的值是Y還是N
剩餘的錢的部份
你就把money-a的值存回money就行了
如:money = money - a;或money -= a;
2.
直接在switch中使用default:就行了
default中看要用goto傳回去或者在printf("選單\n");跟switch外面加個do...while也行
用do...while的話
就多個變數做標籤
default時就讓此標籤符合while重做的條件
ps.你switch跟system("PAUSE");中間少了個右大刮號
縮排部份也有點問題
第一個printf中的字也有錯
還有要記得使用code標籤喔 |
|
回頂端 |
|
|
恆焱 偶而上來逛逛的過客
註冊時間: 2008-03-15 文章: 5 來自: 地球 0.00 果凍幣
|
發表於: 2008-3-15, PM 11:15 星期六 文章主題: |
|
|
原來我第1問題是do{ }while擺錯地方
第2問題原來用goto就可以解決
感謝解答,謝謝指點!!
不過和用剩餘零錢在投這部分看不懂,
還有剛試過設是否在選Y/N這條件,可是我只成功用數字來判別,
不能用英文字元使用,是哪裡有問題?
|
|
回頂端 |
|
|
yag Site Admin
註冊時間: 2007-05-02 文章: 689
2704.11 果凍幣
|
發表於: 2008-3-16, AM 9:18 星期日 文章主題: |
|
|
剩餘零錢就是把你剩下的錢回存給money
我不太了解你哪裡不懂
看你要放在printf之前、裡面或之後都行
像是
代碼: | if(money>=a)
{
money -= a;
printf("您的果汁 剩於%d元\n",money);
} |
或是
代碼: | if(money>=a)
{
printf("您的果汁 剩於%d元\n",money -= a );
} |
或者
代碼: | if(money>=a)
{
printf("您的果汁 剩於%d元\n",money-a);
money -= a;
} |
都是ok的,你的do...while並沒有跳回到int a=100,b=200,c=300,d=400,money,choice;這行,那麼money自然會維持在最後的值,所以直接扣除不就是剩餘零錢了嗎?
如果你又投了零錢進去,那就多設一個變數暫存一下剩餘零錢,等到scanf完,再加回money就行了。
scanf不能使用英文字母的話,應該是因為你使用%d在讀吧,%d是讀數字的,要讀字元我記得是用%c,要讀字串是用%s。 |
|
回頂端 |
|
|
恆焱 偶而上來逛逛的過客
註冊時間: 2008-03-15 文章: 5 來自: 地球 0.00 果凍幣
|
發表於: 2008-3-16, PM 2:15 星期日 文章主題: |
|
|
原來如此,把money-a改money-=a
就可以存回我剩餘金額可以再繼續使用,
原來不能用英文字元原因,因習慣使用%d忘記改%s或%c,
所以沒辦法讀英文字元,終於完全解了,
謝謝您的指導,讓我受益良多。
|
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 可以 在這個版面附加檔案 您 可以 在這個版面下載檔案
|
|