0

整数を正しい順序で数字に分割する方法を知る必要があります。たとえば、1234 は 1 2 3 4 と表示されます。整数を分割し、数字を単語として表示したいので、1234 = 1 2 3 4 = 1 2 3 となります。四。これは私がこれまでに得たものです。整数を分割し、数字を単語として表示しますが、順序が逆になっています。少し面倒な場合は申し訳ありません。また、Objective C の学習を始めたばかりなので、配列などについてはまだわかりません。

 int number, right_digit, counter;

    counter = 1;

    NSLog(@"Enter your number");

    while (counter != 0) {
    scanf("%i", &number);


    do {

  right_digit = number % 10;
  number /= 10;



    if (right_digit == 1)
        NSLog(@"one");

    else if (right_digit == 2)
        NSLog(@"two");

    else if (right_digit == 3)
        NSLog(@"three");

    else if (right_digit == 4)
        NSLog(@"four");

    else if (right_digit == 5)
        NSLog(@"five");

    else if (right_digit == 6)
        NSLog(@"six");

    else if (right_digit == 7)
        NSLog(@"seven");

    else if (right_digit == 8)
        NSLog(@"eight");

    else if (right_digit == 9)
        NSLog(@"nine");

    else if (right_digit == 0)
        NSLog(@"zero"); 

    }
    while (number != 0);

    }
}
return 0;
}
4

3 に答える 3

4
NSInteger num=1234;
NSInteger temp=num;

NSMutableArray *digits=[NSMutableArray new];
while(temp >0){
    NSInteger digit=temp%10; //4
    temp/=10;//123
    digits[digits.count]=@(digit);
}

for(NSNumber *d in [digits reverseObjectEnumerator]){
    switch([d integerValue]){
         case 0: NSLog(@"Zero"); break;
         case 1: NSLog(@"One"); break;
         case 2: NSLog(@"Two"); break;
         case 3: NSLog(@"Three"); break;
         case 4: NSLog(@"Four"); break;
         case 5: NSLog(@"Five"); break;
         case 6: NSLog(@"Six"); break;
         case 7: NSLog(@"Seven"); break;
         case 8: NSLog(@"Eight"); break;
         case 9: NSLog(@"Nine"); break;
    }
}
于 2013-03-31T11:23:08.383 に答える
3

元の数字を通過するときに単語(または数字)を保存し、それらを印刷するときに「逆再生」する必要があることを除いて、基本的に正しいことをしています。これを実現する最も簡単な方法は、 を使用するNSMutableArrayことです。数値を処理するときに単語を追加し、印刷のために逆の順序で配列を反復します。

switchすべてのケースで同じことを行い、データのみが異なる場合は、次のように、ルックアップに配列または辞書を使用する必要があります。

NSString *digitWords[] = {@"zero", @"one", @"two", @"three", ...};

この配列を配置すると、呼び出すことができます

NSLog("%@", digitWords[digit]);

switch発言を削除します。

于 2013-03-31T11:19:48.763 に答える
2

Anoop Vaidyaの回答を正確な回答に変更しました

NSInteger num=1234567890;
NSInteger temp=num;

NSMutableArray *digits=[NSMutableArray new];
while(temp >0){
    NSInteger digit=temp%10; //4
    temp/=10;//123
    [digits addObject:[NSString stringWithFormat:@"%d",digit]];

}

NSMutableArray *show = [NSMutableArray new];

for(NSNumber *d in [digits reverseObjectEnumerator]){
    switch([d integerValue]){
        case 0:[show addObject:@"Zero"];    break;
        case 1:[show addObject:@"One"];     break;
        case 2:[show addObject:@"Two"];     break;
        case 3:[show addObject:@"Three"];   break;
        case 4:[show addObject:@"Four"];    break;
        case 5:[show addObject:@"Five"];    break;
        case 6:[show addObject:@"Six"];     break;
        case 7:[show addObject:@"Seven"];   break;
        case 8:[show addObject:@"Eight"];   break;
        case 9:[show addObject:@"Nine"];    break;
    }
}
NSLog(@"%d=%@",num,[show componentsJoinedByString:@", "]);
于 2013-04-01T13:58:07.220 に答える