2012-05-03 3 views
1

해야 할 일 : 입력 된 문자열 그룹에 모든 숫자를 가져오고 새 문자가 NSMutableString 번호에 추가 될 때마다 출력하십시오. 그런 다음 현재 char이 숫자가 아니면 + 또는 x 또는 *, -. 그것들 중 하나라면 배열에 추가하고 그것을 출력합니다.숫자 대신 중국어 문자 출력? 목표 C

무엇의 행함 : 중국어

`Please enter math: 12+56x45 
2012-05-02 23:52:06.538 CALC[1921:403] 퀱 
2012-05-02 23:52:06.541 CALC[1921:403] 퀱퀲 
2012-05-02 23:52:06.542 CALC[1921:403] running array (
"+" 
) 
2012-05-02 23:52:06.543 CALC[1921:403] 퀱퀲퀵 
2012-05-02 23:52:06.544 CALC[1921:403] 퀱퀲퀵퀶 
2012-05-02 23:52:06.544 CALC[1921:403] 퀱퀲퀵퀶큸 
2012-05-02 23:52:06.545 CALC[1921:403] 퀱퀲퀵퀶큸퀴 
2012-05-02 23:52:06.546 CALC[1921:403] 퀱퀲퀵퀶큸퀴퀵` 

문제를 출력하기 : 나는 내가 그것을 제대로 작동 else if 부분없이 코드를 실행하면 그러나 unichar에 char current = [InputString characterAtIndex:i];과 관련이있다 생각합니다. 문자열의 일부인 문자 수가 예상되는 숫자 임에도 불구하고 잘못된 언어로 표시되는 것으로 보입니다.

내 코드 :

int main() 
{ 
    char userInput[99]; 
    NSMutableString *number = [NSMutableString string]; 
    int i; 

    printf("Please enter math: "); 

    scanf("%s", userInput); 
    fpurge(stdin); 
    NSString *InputString = [NSString stringWithUTF8String:userInput]; 
    NSMutableArray *broken = [NSMutableArray array]; 

    for (i=0; i < [InputString length]; i++) { 
     char current = [InputString characterAtIndex:i]; 
     NSString *cur = [NSString stringWithFormat:@"%c" , current]; 
     if (isalnum(current)) { 
      [number appendString:[NSString stringWithCharacters:&current length:1]]; 
      NSLog(@"%@", number); 
     } 
     else if (current == '+'|| current == 'x'||current == '*'||current == '-') { 
      [broken addObject:[NSString stringWithFormat:cur]]; 
      NSLog(@"running array %@", broken); 
     } 
    } 
    return 0; 
} 
+1

사실 한국어 한글은 중국어가 아닙니다. http://unicode-table.com/en/D036/ –

답변

1

나는 당신이 NSStringchar을 "변환"한 참조하십시오. 인쇄중인 문자열에 cur을 추가하지 않으시겠습니까? 그래서 변경 :

[number appendString:[NSString stringWithCharacters:&current length:1]] 

에 :

여기
[number appendString:cur] 
1

아마도 더 쉽게 수행 할 수학을 해결 할 수 있도록 사업자에서 번호를 분리하는 높은 수준의 방법입니다 ...

NSString *equation = @"12+56x45"; 
NSCharacterSet *operatorCharacterSet = [NSCharacterSet characterSetWithCharactersInString: @"+-/x"]; 
NSCharacterSet *numberCharacterSet = [NSCharacterSet characterSetWithCharactersInString: @"1234567890"]; 

NSArray *numbersOnly = [equation componentsSeparatedByCharactersInSet: operatorCharacterSet]; 
NSArray *operatorsOnly = [equation componentsSeparatedByCharactersInSet: numberCharacterSet]; 

for (NSString *number in numbersOnly) { 
    NSLog(@"%@", number); 
} 

for (NSString *operator in operatorsOnly) { 
    NSLog(@"%@", operator); 
} 

끝 비트는 숫자와 연산자를 로그하여 이제 어떻게 다른 배열로 분할되었는지 보여줍니다. 이것은 당신의 작업을 조금은 평범하게 합니다만 방정식의 첫 번째 데이터를 숫자로 가정하면 두 배열을 일렬로 횡단하여 수학을 수행 할 수 있습니다.