2017-02-18 7 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에서는 불가능한 기존 목록을 수정하지 않습니다.

이 코드를 사용하여 임의의 값에서 목록을 작성하는 경우 예상 실행 시간은 목록의 최종 길이에서 2 차입니다. 긴 목록의 더 좋은 방법은 목록을 순서대로 작성한 다음 끝에 정렬하는 것입니다.

문제가 오토 마톤을 읽는 것이면, 이것은 털이 많은 코드처럼 들리지만, 대부분 사람이 오류없이 입력하는 것은 정말 어렵다고 들립니다. 사용자로부터 값을 읽으려는 코드가 귀하의 pastebin에 표시되지 않습니다. 그래서 저는 여러분의 문제가 다른 곳에 있다고 가정 할 것입니다.

문제를 매우 적은 수로 줄여서 여기에 포함 시키십시오. 나는 당신이 그런 식으로 더 나은 대답을 얻을 것이라고 생각합니다.

+0

내 문제는 실제로 사용자로부터 값을 읽고 있습니다. 나는 사용자로부터 automatons를 얻을 수 있기를 원합니다. –

+0

문제를 아주 작게 만들고 여기에 코드를 포함 시키면 더 나은 답을 얻을 수 있습니다. 이유에 대한 설명이 있습니다. 작동하지 않는 것 같습니다. 그렇지 않으면 누군가가 당신을 위해 코드를 작성하도록 요청하고 있습니다. –