2013-04-16 3 views
-2

Objective-c를 사용하여 몇 가지 기본 알고리즘 및 데이터 구조 문제를 해결하려고 노력 중입니다. 조금 어려움을 겪었습니다. 콘솔에서 정수 배열을 입력해야합니다.이 작업을 수행하는 가장 좋은 방법은 무엇입니까?객관적인 c에서 콘솔의 정수의 NSArray를 입력하는 방법은 무엇입니까?

어떤 링크 나 설명서로 직접 안내해주세요.

감사합니다, 편집

+0

잠깐, 뭐라 구요? LLDB에서 배열을 만들고 어떤 식 으로든 프로그램 실행에 영향을 주길 원한다는 뜻입니까? – CodaFi

+0

"콘솔"이 무슨 소리 야? – matt

+2

아마도 표준 입력에서 읽는 OS X의 "명령 줄 도구"일 것입니다. –

답변

1

: 계획은 다음과 같다 :

  1. 콘솔에서 읽기 및 C-문자열로 입력을 저장합니다.
  2. 이 c-String을 componentsSeparatedByString: 메서드를 호출 할 수있는 NSString으로 변환하십시오.
  3. 이 메서드는 단일 숫자의 NSStrings NSArray를 반환합니다.
  4. NSArray를 반복하면서 NSNumber를 NSMutableArray에 저장하고 NSNumber를 각 문자열에 대한 문자열의 내용으로 만듭니다.
  5. 우리는 NSArray를 NSLog()하거나 구성 요소로 원하는대로 할 수 있습니다. 그래서 여기

은 재미 :

NSMutableArray *numbersAsNumbersArray = [[NSMutableArray alloc] initWithCapacity:0]; 
char input[1000] = {}; 
scanf("%s", input); 
NSString *inputString = [NSString stringWithCString:input encoding:NSUTF8StringEncoding]; 
NSArray *numbersAsStringsArray = [inputString componentsSeparatedByString:@","]; 
for (NSString *aNumberAsString in numbersAsStringsArray) { 
    NSNumber *aNumber = @([aNumberAsString integerValue]); 
    [numbersAsNumbersArray addObject:aNumber]; 
} 
NSLog(@"%@", numbersAsNumbersArray); 

입력 :3,5,6,7

출력 :(3,5,6,7)

참고 : 괄호 숫자가 내부에 저장되어 있음을 나타냅니다 NSArray

읽기 617,451,515,

마지막으로 뭔가;) NSMutableArray

NSString Documentation

NSArray Documentation과 가변 서브 클래스, 특히 method we use

편집 2 : Martin R에 의해 코멘트에서 언급 한 바와 같이 (감사합니다!) 위의 코드의 짧은 버전은 다음과 같습니다.

NSMutableArray *numbersAsNumbersArray = [[NSMutableArray alloc] initWithCapacity:0]; 
char input[1000] = {}; 
scanf("%s", input); 
NSArray *numbersAsStringsArray = [[NSString stringWithCString:input encoding:NSUTF8StringEncoding] componentsSeparatedByString:@","]; 
numbersAsNumbersArray = [numbersAsStringsArray valueForKey:@"integerValue"]; 
NSLog(@"%@", numbersAsNumbersArray); 
+1

루프를'numbersAsNumbersArray = [numbersAsStringsArray valueForKey : @ "integerValue"]':-)로 줄일 수 있습니다. –

+0

당신은 절대적으로 맞습니다 :)'[numbersAsNumbersArray addObject : @ ([aNumberAsString integerValue])를 사용하여 6 개의 문자를 더 저장할 수도 있습니다. ]') 그냥 좀 더 자세하게 만들고 싶었습니다. 나는 내가 훨씬 더 좋아하는 짧은 버전을 곧 추가 할 것이다. – HAS

+1

내가 말한 것은'valueForKey : @ "integerValue"'를 * arrays *'numbersAsStringsArray'에 적용하여 전체 루프를 대체 할 수 있다는 것입니다. -하지만 그것은 단지 발언/제안이었습니다. –

관련 문제