2014-11-27 5 views
-3

주어진 화학 화학식를 기반으로 주어진 분자의 분자량을 계산하는 프로그램을 작성하려고합니다.화학식을 기반으로 분자량을 계산하십시오.

이 코드는 "CH3OH"과 같은 분자식을 배열 {C H 3 O H}으로 나눌 수 있습니다. 여기에서 분자량을 계산하기 위해 분할 텍스트를 사용하는 것이 좋을까요? 모든

string input = MoleculeTextbox.text; 
string pattern = @"([0-9]?\d*|[A-Z][a-z]{0,2}?\d*)"; 
string[] sunstrings = Regex.Split(input,pattern); 
+7

그 분자량이 텍스트 상자가 CRT, LCD 또는 플라즈마에 표시되어 있는지 여부에 따라 달라집니다, 어떤 해상도가 표시되고 무엇을 : 나는 매핑의 관심과 한 가지의 추가를 취할 reduce을 사용하고 있습니다 DPI는 ... 분자의 이름을 입력하고 가중치를 표시하려면 원자와 그 가중치를 포함하는 조회 테이블을 가지고 사용자가 입력 한 분자에서 결합해야합니다. – CodeCaster

+3

설명하지 않은 문제는 해결할 수 없으므로 문제가 무엇인지 잘 모릅니다. 코드를 게시하고 문제가 무엇인지 설명하십시오. –

+0

텍스트를 분할하기 위해 regex.split을 시도했습니다. 이것은 꼭해야만 할 수 있지만, 문제는 계산할 때 regex.split을 사용하지 않는 것입니다. – Trexten

답변

1

첫째, 당신은 다음과 같이 보일 수도 등 "HHH"로 "H3"를, 문자열을 구문 분석하고 설정해야 할 것 :

var x = "CH3OH".replace(/([a-z])([2-9])/gi, function(_,c,n) { return new Array(1+parseInt(n)).join(c); }); 

첫 번째 그룹은 일치되고 문자 및 두 번째 그룹은 반복 횟수입니다.

이제 "CHHHOH"과 같은 문자열이 있습니다. 이 행을 각 색인에 하나의 문자가있는 배열로 분할하고 .split(''), 각 값을 분자량에 매핑 할 수 있습니다. 이를 위해서는 일종의 조회 테이블을 정의해야합니다.

var mass = { C: 12.011, H: 1.008, O: 15.999 }; 
var weight = x.split('').reduce(function(sum,element) { return sum + mass[element]; }, 0); 
+0

누구나 최종 작업 코드가 있습니까? –

관련 문제