2014-05-12 2 views
0

문제가 있습니다. 글자에 값을 연결해야합니다. 값은 배열로옵니다. 예를 들어 :글자를 배열에 저장된 값과 연관 시킴

Value vector -> [1,2,3,1,2,5,1,...,8]

그 벡터의 첫 번째 숫자는 마지막 숫자까지 등 문자 "A", "B"문자에 2 수에 연결될 수 있도록 아이디어를 필요 문자 "z".

그래서, a -> 2는, 값 "은"나는 "공기"와 같은 단어가있을 경우 이것의 목적은 2

입니다 I "는"+의 값으로 공기의 값을 원하는 "i"의 값 + "r"의 값.

+0

이 값 벡터는 무엇입니까? 왜 나는 파일이 1 –

+0

에 연결되지 않은, 즉 이런 식으로 뭔가 : B 1 C 5 등 내가 배열에 그 숫자를 저장 생각하고, 그래서 편지에 할당 할 수 있습니다 값에 대한 각 문자. 당신이 더 나은 해결책을 가지고 있다면 나는 모든 귀입니다. – Blackfing

+0

'값'의 유형은 무엇입니까? – metacubed

답변

1

문제는 문자에서 배열 색인을 가져올 수없는 것 같습니다. 26 개의 라틴 소문자는 ASCII의 연속 블록, 그리고 당신은 따라서, 단일 인용 표기와 문자의 ASCII 코드를 얻을 수 있습니다 :이 당신에게 유효하지 않은 인덱스를 줄 것이다

int ix = c - 'a' 

참고하여 문자 c이 문자가 아닌 경우 배열. 알파벳이 일반 라틴 알파벳이 아닌 경우 문자에 숫자 색인을 할당하는 함수를 작성할 수 있습니다. 악센트 문자 순수한 ​​7 비트 ASCII 범위 밖에 있기 때문에

int index_de(int c) { 
    if (c == 'ä') return 26; 
    if (c == 'ö') return 27; 
    if (c == 'ü') return 28; 
    if (c == 'ß') return 29; 
    if (c < 'a' || c > 'z') return -1; 
    return c - 'a'; 
} 

(이 이슈를 소개합니다 : 나는 독일의 알파벳에 대한 인덱스 기능을 쓰고 싶다 예를 들어, 나는 이런 식으로 뭔가를 할 것 소스 코드 및 입력 인코딩.

이 기능을 사용하면 (a) 파일을 읽고 점수를 매길 때 (b) 점수를 문자 코드에 할당 할 수 있습니다.

+0

고마워, 그게 내가 누락 된 바로 그거야. 변수 "c"를 97로 정의하면 ac는 벡터 [0], BC는 벡터 [1] 등이됩니다. – Blackfing

+0

문자 ''a ''는 값이 정수 인 상수입니다. 97의 값을 가진 매크로 (아마도 전역 변수) 나'#defd'' 매크로를 가질 수 있습니다.하지만이 표기법을 사용하는 것이 좋습니다. 문자에 대한 연산을하는 것이 바로 명백합니다. ('x -'0 '에 대해서도 마찬가지이다. 문자열에서 숫자 값으로의 변환이 일어나는 것을 한 눈에 볼 수있다.) –