PROBLEM #3.3:平均氣溫
五月份的台北天氣已經開始轉熱,其整月的日平均溫度如下:
T=[25 26 24 23, 18 17 20 30 29, 25 19 19 21 20, 23 24 23 25 23,…
27 28 24 26 27, 23 25 24 21 19, 20]C
1. 試撰寫一程式,以上述之溫度資料為輸入值,求其月平均、最高及最低溫度。
2. 試撰寫另一程式,以交談式輸入之方式,按月份輸入每日之溫度,(必須分清楚每月應有之輸入日數)然後呼叫第一項之程式進行分析。
註:請同學針對本題目直接回應(COMMENT),請勿採用EMAIL方式提交。
6 則留言:
程式如下
function [avg, mx, mn]=month(t)
% avg is average temp
% max is maximun temp
% min is minimun temp
avg=mean(t);
mx=max(t);
mn=min(t);
輸入預計算的溫度即可計算出最大值最小值以及平均
執行結果為按此看結果
由於程式太長以及圖片連結太多所以改以網頁方式呈現
點我看第二題
Eric:
第二題的結果有點奇怪,有一些屬於亂碼
請問一下老師
亂碼出現是在哪邊,是程式本身,還是我所貼的連結出現亂碼?
第一小題的寫法和堉光差不多
第二小題我則嘗試用比較簡單的switch-case和if-else指令寫出
1.
程式指令
function [Mean Max Min]=temp(T)
% 計算月平均、最高及最低溫度
Mean=mean(T); % 平均溫度
Max=max(T); % 最高溫度
Min=min(T); % 最低溫度
執行結果
>> T=[25 26 24 23 18 17 20 30 29 25 19 19 21 20 23 24 23 25 23 27 28 24 26 27 23 25 24 21 19 20];
>> [Mean Max Min]=temp(T)
Mean =
23.2667
Max =
30
Min =
17
2.
程式指令
% month_temp.m
% 以交談方式,按月份輸入每日之溫度,呼叫另一程式進行溫度分析
month=input('請輸入月份 (1-12):');
T=input('請輸入每日溫度 ex.[24 28 30]:');
switch month
case {1,3,5,7,8,10,12}
if numel(T)==31
[Mean Max Min]=temp(T)
else
input('輸入溫度之日數不符,此月份應輸入31天之溫度!\n')
end
case 2
if numel(T)==28
[Mean Max Min]=temp(T)
else
input('輸入溫度之日數不符,此月份應輸入28天之溫度!\n')
end
case {4,6,9,11}
if numel(T)==30
[Mean Max Min]=temp(T)
else
input('輸入溫度之日數不符,此月份應輸入30天之溫度!\n')
end
end
執行結果
& 情境一 (當輸入溫度之日數與當月天數相符時,則可算出當月平均、最高及最低溫度):
>> month_temp
請輸入月份 (1-12):4
請輸入每日溫度 ex.[24 28 30]:[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30]
Mean =
15.5000
Max =
30
Min =
1
& 情境二 (當輸入溫度之日數與當月天數不符時,則會顯示警示):
>> month_temp
請輸入月份 (1-12):12
請輸入每日溫度 ex.[24 28 30]:[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30]
輸入溫度之日數不符,此月份應輸入31天之溫度!
用剛學到的menu指令將原本的程式做了一點修正
視窗中列出可供選擇的月份,可避免使用者輸入非1~12月的數字
程式指令
% month_temp2.m
% 以交談方式,按月份輸入每日之溫度,呼叫另一程式進行溫度分析
month=menu('請輸入欲計算溫度之月份:','一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月')
T=input('請輸入每日溫度 ex.[24 28 30]:');
switch month
case {1,3,5,7,8,10,12}
if numel(T)==31
[Mean Max Min]=temp(T)
else
input('輸入溫度之日數不符,此月份應輸入31天之溫度!\n')
end
case 2
if numel(T)==28
[Mean Max Min]=temp(T)
else
input('輸入溫度之日數不符,此月份應輸入28天之溫度!\n')
end
case {4,6,9,11}
if numel(T)==30
[Mean Max Min]=temp(T)
else
input('輸入溫度之日數不符,此月份應輸入30天之溫度!\n')
end
end
執行結果
在指令窗中輸入敘述檔檔名month_temp2後會出現 選擇視窗
當輸入溫度之天數與該月份相符時,會出現以下之結果
天數相符
當輸入溫度之天數與該月份不符時,會出現以下之結果
天數不符
雖然指令只有小小的不一樣,但是也會提供不大一樣的功能性 :p
張貼留言