作者tony80720 (tony)
看板C_Sharp
標題[問題] 關於FOR迴圈
時間Wed Mar 23 09:20:01 2011
小弟我是個新手
想要寫出目前所需要金額一直寫不出來
EX:請輸入欲購買張數 5
請輸入欲購買者年齡 18
您目前所需給予的金額為 40
請輸入欲購買者年齡 20
您目前所需給予的金額為 80
但是一直跑不出正確的數值
所以想PO程式碼
請教各位先進
以下是我的程式碼
-----------------------------------------------
int amount;
double price = 0;//宣告一個名稱為price、初始值為0的變數
double a = 0;
int adultticket = 0, oldticket = 0, childticket = 0;
Console.WriteLine("請輸入欲購買總張數:");
amount = int.Parse(Console.ReadLine());
int[] age = new int[amount];
double[] charge = new double[amount];
for (int i = 0 ; i < amount; i++ )
{
Console.WriteLine("請輸入欲購買者年齡:");
age[i] = int.Parse(Console.ReadLine());
double price1 = 0;
double price2 = 0;
double price3 = 0;
double price4 = 0;
if (age[i] > 65)
{
Console.WriteLine("購買者為老人以老人票計");
oldticket = oldticket + 1;
}
else if (age[i] < 18)
{
Console.WriteLine("購買者為兒童以兒童票計");
childticket = childticket + 1;
}
else
{
Console.WriteLine("購買者為成人以成人票計");
adultticket = adultticket + 1;
}
if (age[i] > 65 )
{
int fee = 40;
price = fee * 0.3;
price1 = price * oldticket;
}
else if (age[i] < 18 )
{
int fee = 40;
price = fee * 0.5;
price2 = price * childticket;
}
else if (18 <= age[i] && age[i] <= 65 && amount > 5)
{
int fee = 40;
price = fee * 0.8;
price3 = price * adultticket;
}
else
{
int fee = 40;
price = fee;
price4 = price * adultticket;
}
charge[i] = price1 + price2 + price3 + price4;
for (int j = 0; j <= i; j++)
{
a = a + charge[j];
}
Console.WriteLine("您目前所需給予的金額為:" + a);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.66.168.37
2F:→ arcred:我就好心提示你一下..你的xxxxxticket都是全域變數, 觀察你 03/23 11:57
3F:→ arcred:的 input 跟 output 就可以猜到錯在哪了 03/23 11:58
4F:→ arcred:另外, 每一輪都算一次sum不是個好方法. 定個全域變數每輪把 03/23 12:00
5F:→ arcred:當次算出的數字加上去就夠達到你要的效果了 03/23 12:00
james732大大您說的方式 好像跟我想要的程式結果不太一樣
照您所說的方式 年齡輸入不同的話 會變成這樣 例如 18歲 40元 73歲 12元
但是我是想要 18歲 40元 73歲 52元
arcred大大您說的 input 跟 output 就可以猜到錯在哪了
可以麻煩您在講解清楚點嗎? 現在的我太菜了 看不太出來
※ 編輯: tony80720 來自: 61.60.254.9 (03/23 22:56)
6F:→ markov:怎不用switch比較方便? 03/23 23:00
7F:推 hatasum:adultticket為啥要++??用你的case,第一個人18歲 第二個人 03/23 23:34
8F:→ hatasum:40歲,第二次run的時候++變成2,後面當然就*2倍??? 03/23 23:35
9F:推 hatasum:而且後面還一直累加.....(a = a + charge[j];) 03/23 23:40
10F:→ hatasum:^^先想想整個流程、順序,先在心裡想一下回圈的跑法 03/23 23:41
11F:→ hatasum:再動手寫,這會比還沒想清楚,然後寫完了再Debug還要更能 03/23 23:42
12F:→ hatasum:學到東西喔^^ 03/23 23:43
hatasum大大adultticket為啥要++? 這個想法我是想說要累計有幾張成人票
之後再乘以成人票價格 這個想法有問題嗎?
※ 編輯: tony80720 來自: 61.60.254.9 (03/24 02:22)
13F:推 arcred:那請列出一個您程式跑出的input跟output, 我告訴您如何觀察 03/24 03:24
int oldticket = 0, childticket = 0;
Console.WriteLine("請輸入欲購買總張數:");
amount = int.Parse(Console.ReadLine());
int[] age = new int[amount];
for (int i = 0 ; i < amount; i++ )
{
Console.WriteLine("請輸入欲購買者年齡:");
age[i] = int.Parse(Console.ReadLine());
if (age[i] > 65)
{
Console.WriteLine("購買者為老人以老人票計");
oldticket = oldticket + 1;
}
else (age[i] < 18)
{
Console.WriteLine("購買者為兒童以兒童票計");
childticket = childticket + 1;
}
else
{
Console.WriteLine("購買者為成人以成人票計");
adultticket = adultticket + 1;
}
Console.WriteLine(oldticket);
Console.WriteLine(adultticket);
Console.WriteLine(childticket);
}
請問這是您說的INPUT、OUTPUT嗎?
PS.我已經照您的方法寫出正確的跑法了 不過還是有點不懂您說的INPUT OUTPUT
謝謝您
※ 編輯: tony80720 來自: 61.60.254.9 (03/24 10:23)
14F:推 arcred:原來你的問題在不了解術語的意思(其實也不是什麼術語) @@" 03/24 11:49
15F:→ arcred:input, output通常指使用者的輸入值, 跟程式印出的值 03/24 11:49
16F:→ arcred:例如你原本的程式依序輸入5,18,20的in會得到40,120的out 03/24 11:53
17F:→ tony80720:謝謝您我懂了 03/24 22:55
18F:推 clear000:我們剛剛上課在教這邊耶哈哈 04/06 01:04
19F:→ clear000:還好我有些過來看 就知道怎麼打了 04/06 01:04