2017-02-18 16 views
-1

我希望能夠讓用戶輸入一個包含5個字段的自動機類型的變量,這當然需要我找到一種方法來接受用戶輸入來填充列表這裏是我的代碼:填寫一個自動機與用戶輸入ocaml給出的元素

type automate = { 
etat_initial : int; 
ensemble_des_etats : int list; 
alphabets : char list; 
transitions :(int*char*int) list; 
etats_finaux : int list 
};; 

我使用函數調用插入該插入列表中的一個元素,但不幸的是沒有運氣已經嘗試過

回答

0

我不能告訴,如果你的問題是與閱讀在一個自動機一般的或者添加元素到列表中。

OCaml中的列表是不可變的,因此無法將值實際插入到現有列表中。您需要創建一個具有所需形式的新列表。如果您不關心訂單,最簡單的方法是將新值添加到此列表的開頭:newval :: thelist

如果您關心訂單,您需要查看正確位置的列表。下面是一些代碼到一個新值添加到列表中,這樣的名單停留在增加順序排序:

let rec addint list i = 
    match list with 
    | [] -> [i] 
    | h :: t -> if i < h then i :: list else h :: addint t i 

注意,此代碼返回一個新的列表。它不會修改現有的列表,這在OCaml中是不可能的。

如果您使用此代碼從隨機值構造列表,預期運行時間在列表的最終長度爲二次方。長列表的更好方法是按順序構建列表,然後在最後對其進行排序。

如果你的問題是閱讀一個自動機,這聽起來像毛茸茸的代碼,但大多數人聽起來真的很難輸入沒有錯誤。我沒有看到你的pastebin中的任何代碼讀取用戶的值。所以我會假設你的問題在別處。

最好將您的問題修剪爲幾行,並將它們包括在此處。我想你會以這種方式得到更好的答案。

+0

我的問題其實是從用戶那裏讀取數值我希望能夠從用戶那裏獲得自動機 –

+0

如果你將問題變得非常小並且在這裏包含代碼,那麼你會得到更好的答案,並解釋爲什麼它似乎沒有工作。否則,你要求有人只爲你寫代碼。 –

相關問題