Re: [發問]請問關於迴圈的題目

看板MATLAB作者 (氧氣)時間13年前 (2012/12/13 02:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《Silent50286 ()》之銘言: : 題目是: : 要完成排列組合C(n,k),並起使用者輸入n及k, : 若n及k 為非整數或負數時,請使用者重新輸入,直到n及k為合理。 : 小妹我寫出來是這樣: : n=input('請輸入n :'); %請輸入n值 : k=input('請輸入k :'); % 輸入k值 : while x==100 : if n<0||~isinteger(n)||k<0||~isinteger(k) %如果n及k為非整數或負數時 : n=input('請輸入n :'); %再輸入一次n值 : k=input('請輸入k :'); %再輸入一次k值 : end : end : fprintf('%d\n',factorial(n)/(factorial(k)* factorial(n-k))) %計算C(n,k)答案 : -------- : 我在測試時輸入 n及k 是負數或非整數, : 迴圈好像跑不出來,是不是寫錯了呢? : 請各位大大指教 !! 感謝 這部份的code很多地方有點奇怪 第一...x是什麼東西原文沒定義 所以while x == 100 無法判斷迴圈進入的條件是什麼 第二...isinteger這指令是在判斷變數是否為整數 這跟變數的type有關係 舉例來說好了 matlab如果沒特別說明的話 變數一般都是內定double type 所以就算是input為整數 type仍是double 所以matlab不會將他視作integer 例如 n=7,但是 isinteger(n) 依然為 0 所以判斷式這樣寫是行不通的 以下是我個人的寫法 僅供參考 若不懂可以站內信討論 n=input('請輸入n :'); %請輸入n值 k=input('請輸入k :'); % 輸入k值 while ( n<0 || n-double(int64(n)) ~= 0 || k<0 || k-double(int64(k)) ~= 0 ) n=input('請輸入n :'); %再輸入一次n值 k=input('請輸入k :'); %再輸入一次k值 end fprintf('%d\n',factorial(n)/(factorial(k)* factorial(n-k))) %計算C(n,k)答案 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.127.59
文章代碼(AID): #1GoCeiG5 (MATLAB)
文章代碼(AID): #1GoCeiG5 (MATLAB)