我試圖完成以下任務:使用switch語句和while循環結合
創建 一個 腳本 是 將 反覆 在 的 創建 一個 隨機 整數 ķ 範圍 的至直至 每 案例 已 已被 輸入 在 至少 一次。 You have possible cases。 案例 甲 是 輸入 時的 的 隨機 整數 ķ 的 範圍 是 輸入 等於 和B之間 或 到 7. 案例 是 範圍的 的 隨機 整數 ķ是 和C範圍的 之間 或等於 至8 14. 案例 是 輸入 當 的 的 隨機 整數K 是 之間 或 等於 到和規則: 當 一個 情況 是 進入 你 必須 打印 到 的 用戶 「恭喜你 進入 案例 (A , B, 或 C)「。 你 只能 只有 輸入 每個 案例 一次。 如果 的 程序 試圖 到 進入 的 相同 情況下 更 比 一次, 你 必須 打印。 「無效, 即 案例 已經 已經 已被 輸入」。 的 程序 將 結束 一次 所有 的 案件 已經 一直 進入 和 的 程序 將 打印 「好 工作, 你 有 進入 所有 案件」。 如果 的 程序 試圖 到 進入 任何 已經 進入 情況下 更 比次 (3 總 次 不 只是 爲 一個 具體 情況下), 程序 將 月底 和 打印 到 的 用戶 「這 隨機 發電機 不是 隨機 足夠了」。
這是我有這樣的代碼。我花了幾個小時才能進行調試。我是否以錯誤的方式接近?請讓我知道。
K = round(rand*(20))
flag = 0;
counterA =0;
counterB=0;
counterC=0;
switch K
case {0,1,2,3,4,5,6,7}
fprintf('Congratulations you entered Case A\n')
flag = 1;
counterA = 1
case {8,9,10,11,12,13,14}
fprintf('Congratulations you entered Case B\n')
flag =2;
counterB = 1
case {15,16,17,18,19,20}
fprintf ('Congratulations you entered Case C\n')
flag = 3;
counterC = 1
end
while flag == 1 || flag == 2 || flag ==3
K = round(rand*(20))
if K >=0 && K<=7 && flag==1
disp ('Invalid, that case has already been entered')
counterA = counterA+1
elseif K >=8 && K<=14 && flag ==2
disp ('Invalid, that case has already been entered')
counterB=counterB+1
elseif K >=15 && K<=20 && flag==3
disp ('Invalid, that case has already been entered')
counterC =counterC+1
elseif K >=0 && K<=7 && flag ~=1
counterA =counterA+1
flag == 1;
if counterA==1&&counterB~=2 ||counterA==1&&counterC~=2
fprintf('COngrats guacamole A\n')
end
elseif K >=8 && K<=14 && flag ~=2
counterB=counterB+1
flag == 2;
if counterB ==1&&counterA~=2||counterB==1&&counterC~=2
fprintf('COngratsavacado B\n')
end
elseif K >=15 && K<=20 && flag~=3
counterC=counterC+1
flag == 3;
if counterC==1&&counterA~=2||counterC==1&&counterB~=2
fprintf ('Congratscilantro C\n')
end
end
if counterA==1 && counterB==1 && counterC==1
flag=100;
disp('DONE')
elseif counterA == 3|| counterB==3 || counterC==3
disp ('That random generator wasnt random enough')
flag =99;
elseif counterA==2||counterB==2||counterC==2
disp('Inval')
end
我很抱歉提出一些完全不相干的東西,但我必須問:爲什麼你選擇在問題文本的每一行只有一個單詞? (我正在談論你如何寫它,而不是如何出現在上面)。試圖複製粘貼有些奇怪的結果嗎? –
rand是一個以矩陣維度爲參數的函數。我想你的意思是'round(rand(1)* 20)'。 – engineerC
@CaptainMurphy'rand'和'rand(1)'沒有任何區別。 – Daniel