저는 재미있는 이유로 로마 숫자 변환기를 쓰고 있습니다. 문제는 앞에서 언급 한 문자 우선 순위까지 작동합니다.문자열에서 문자 우선 순위를 지정해야합니다.
로마 숫자는 위치가 틀 렸습니다. 즉, III는 어떤 기본^2 + 1 *이든^1 + 1 *의 기본^0을 상징하지 않습니다.
누군가가 XIV를 타이핑하면 나는이 경우에 추가되지 않고 차라리 빼는 것이 필요합니다. 어떻게해야할지 모르겠습니다. 이 문제를 해결하기위한 최선의 방법은 무엇입니까?
이const char cRomanArray[] = "IVXLCDM";
const int romanArray[] = { 1, 5, 10, 50, 100, 500, 1000 };
그래서 너무 힘들 날을 위해 단순히 내에서 우선 순위를 확인하여 망할 일을 무차별 않을 것이다 :
나는 모두를 배열에 저장되어있는 로마 기호 및 각각의 진수를 즉, 'I'가 'V'보다 작은 경우, 예를 들어 'XIV'와 같은 기호가 다음 기호보다 작 으면 배열로 정렬했기 때문에 기호가 작을 수 있습니다. add 대신 값을 뺍니다.
그러나 이것은 매우 못생긴 해결책처럼 보입니다. 아마 더 좋은 것들이 있을까요? 정규 표현식의 라인을 따라 무언가를 생각하고 있었을 것입니다. (끔찍한 생각처럼 들리면, 아직 RegExp를 사용하지 않았지만 그것이 필요한만큼 할 수있는 것처럼 들리지만, 그것은 문자열의 문자를 결정하는 것입니다. .)
I & V를 읽고이를 1-9로 변환하면 IX에서 작동하지 않습니까? – Gauthier
아, 네 말이 맞아. 패턴과 일치하지 않을 때까지 바로 읽을 수있을 것이라고 생각하지만, 첫 번째 제안은 코드 작성이 가장 쉽습니다. –