2011-08-01 3 views
0

내 문제/질문은 기본적으로 : 배열의 항목을 호출하려면 scanf를 어떻게 사용합니까? 배열에서 항목을 호출하려면 scanf를 어떻게 사용합니까?

더 자세히

:

나는 거리에서 집의 세부 사항을 제공하는 간단한 응용 프로그램을 만들고 싶어

. 포함하고있는 배열/사전 또는 유사한 것을 원합니다;

집 유형 : 테라스, 분리 등 (문자열)

집 번호 : (int)를

객실 : 집에 객실 번호 (INT)

면적 : 제곱 피트 . (int)

거주자 : 집에 거주하는 인구. (INT)

나는 (지금은 나중에 아이폰 UI를 사용하는 콘솔) 집 번호를 입력 한 다음 해당 속성의 내용을 수신하도록 요청하고 싶습니다. 때로는 모든 세부 사항을 알려주고 싶습니다. 때로는 하나 또는 두 가지가 있습니다.

저는 프로그래밍에 익숙하지 않지만로드를 연구하고 있으며 배열, 사전 및 plists에 대해 배웠습니다. 다른 방법으로 이들 중 하나를 사용할 수있는 것 같지만 최선의 방법은 조합을 사용하는 것입니다.

NSDictionary를 사용하여 각 집의 세부 정보를 저장 한 다음 모든 집을 배열에 넣으려고 plist로 구성하려고합니다. 배열에서 houseNo1, houseNo2, houseNo3 등 배열의 각 집/항목은 키가있는 사전이됩니다.

집 번호를 배열의 항목 번호와 일치 시키면 사용자가 "3"을 입력하면 숫자가 '3'이되어서 정보를 가져옵니다. 즉, 배열의 item3. houseNo3.

나는 scanf를 사용하고 userInput이라는 int에 자신의 선택을 할당하려했지만 프로그램에서 userInput을 사용하여 선택할 배열의 항목을 선택하는 방법을 찾지 못했습니다.

* 0에서 시작하는 배열을 잊지 않고 item0에 문자열을 할당 할 수 있습니다. "문 번호가 0 인 집이 없습니다."또는 그 행을 따라 무언가를 지정할 수 있습니다.

내가 분명히했으면 좋겠다. 필요한 경우 더 설명 할 수 있기를 바랍니다. 어떤 도움이라도 대단히 감사하겠습니다. :)

환호 크리스

PS. 나는 배열/사전/plist 함께 넣어하는 방법을 이해, 그것은 scanf 그냥 문제가있는 배열에서 데이터를 검색 할 수 있습니다. - 불필요하게 그 코드를 설명하는 코드 라인을 작성하는 사람을 원하지 않았습니다.

답변

0

안녕하세요. 프로그래밍에 오신 것을 환영합니다! 지금까지 scanf를 사용하고 iPhone UI로 전환하는 경우 scanf는 C 메소드이고 iOS에서는 UITextView 또는 사용자가 입력 할 때 사용하는 NSString 객체를 사용자로부터 가져올 것이기 때문에 실제로는 상당히 다릅니다.). 위 (실제로 입력 된 수 있다는) 오류 검사 또는 유효한 입력 검사하지 않는

int inputInteger; 
printf("Enter a number:"); 
scanf("%d",&inputInteger); 
myHouse = [myArray objectAtIndex:inputInteger]; 

주와 같은 콘솔 사용 일로부터 scanf와 숫자를 얻으려면.

NSString에서 정수 (기본)를 얻으려는 경우 int inputInteger = [myInputString intValue];과 같은 것을 사용할 수 있으며 inputInteger을 사용하여 위의 NSArray에서 해당 인덱스로 이동하십시오.

일반 프로그래밍은 제쳐두고 : 사용자가 "1"을 입력하고 첫 번째 항목이 될 것으로 예상하는 경우 0에서 시작하는 배열의 인덱싱에 익숙해 져야합니다. 정수로부터 1을 뺄 수 있습니다. 위의 메서드를 사용하고 배열을 인덱싱하는 데 사용합니다 (배열의 첫 번째 값인 인덱스 0에있는 것이 무엇이든 실제로있을 수 있습니다).

+0

예쁘 답장을 보내 주신 분께 감사드립니다. 당신의 대답은 이치에 맞습니다. 지금 제가 잘못하고있는 것을 봅니다. 나는 조금 후에 그것을 줄 것이고, 내가 어떻게 시작하는지 당신에게 알릴 것이다. 다시 한번 감사드립니다. – Kris

0

정확히 내가 감사 드려야 할 것이 었습니다.

나는이 작은 프로그램을 만들기 위해 그것을 사용했다. 나는 원했던 것처럼 작동하지만, 최선의 방법으로 간다면 확실하지 않다. 누구든지 몇 분간의 여유와 공상이 나에게 멋진 피드백을 주었다면!

#import <Foundation/Foundation.h> 

int main (int argc, const char * argv[]) { 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    //create the array 
    NSMutableArray *housesArray = [NSMutableArray array]; 

    //create dictionaries 
    NSMutableDictionary *house1Dict = [NSMutableDictionary dictionary]; 
    NSMutableDictionary *house2Dict = [NSMutableDictionary dictionary]; 
    NSMutableDictionary *house3Dict = [NSMutableDictionary dictionary]; 


    //put dictionaries in the array 
    [housesArray insertObject: house1Dict atIndex:0]; 
    [housesArray insertObject: house2Dict atIndex:1]; 
    [housesArray insertObject: house3Dict atIndex:2]; 

    //populate the dictionaries 
    [house1Dict setObject:@"1" forKey:@"House number"]; 
    [house1Dict setObject:@"semi-detached" forKey:@"House type"]; 
    [house1Dict setObject:@"5" forKey:@"rooms"]; 
    [house1Dict setObject:@"1,525" forKey:@"floor space"]; 
    [house1Dict setObject:@"sea" forKey:@"view"]; 
    [house1Dict setObject:@"friendly" forKey:@"neighbours"]; 

    [house2Dict setObject:@"2" forKey:@"House number"]; 
    [house2Dict setObject:@"detached" forKey:@"House type"]; 
    [house2Dict setObject:@"8" forKey:@"rooms"]; 
    [house2Dict setObject:@"2,685" forKey:@"floor space"]; 
    [house2Dict setObject:@"car park" forKey:@"view"]; 
    [house2Dict setObject:@"nosy" forKey:@"neighbours"]; 

    [house3Dict setObject:@"3" forKey:@"House number"]; 
    [house3Dict setObject:@"detached" forKey:@"House type"]; 
    [house3Dict setObject:@"2" forKey:@"rooms"]; 
    [house3Dict setObject:@"585" forKey:@"floor space"]; 
    [house3Dict setObject:@"rear" forKey:@"view"]; 
    [house3Dict setObject:@"drunk" forKey:@"neighbours"]; 


    //check its all there 
    /*NSLog(@"in the array is%@", housesArray); 
    NSLog(@"at index 0 is %@", [housesArray objectAtIndex:0]); 
    NSLog(@"at index 1 is %@", [housesArray objectAtIndex:1]);*/ 

    int inputInteger; 
    id myHouse; 
    printf("Which house are you interested in viewing?"); 
    scanf("%d", &inputInteger); 

    myHouse = [housesArray objectAtIndex:(inputInteger-1)]; 

    NSLog(@"House number %d is %@, has %@ rooms, beautiful %@ views and %@ neighbours.", 
      inputInteger, 
      [myHouse objectForKey:@"House type"], 
      [myHouse objectForKey:@"rooms"], 
      [myHouse objectForKey:@"view"], 
      [myHouse objectForKey:@"neighbours"]); 

    [pool drain]; 
    return 0; 
} 
관련 문제