Целое число от ввода до английского - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь сделать так, чтобы пользователь ввел число, а затем программа считывает каждую цифру в форме слова.Например:

Input: 517

Output: Five One Seven

Это простой инструмент командной строки, использующий NSLogs и scanf для получения ввода и вывода, ничего особенного.У меня есть суть, но она работает только с однозначными числами:

    #import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {

        int number;

        NSLog(@"Type your number.");
        scanf("%i", &number);


        if (number == 0) {
            NSLog(@"Zero");
        } else if (number == 1){
            NSLog(@"One");
        } else if (number == 2) {
            NSLog(@"Two");
        } else if (number == 3) {
            NSLog(@"Three"); 
        } else if (number == 4) {
            NSLog(@"Four");
        } else if (number == 5) {
            NSLog(@"Five");
        } else if (number == 6) {
            NSLog(@"Six");
        } else if (number == 7) {
            NSLog(@"Seven");
        } else  if (number == 8) {
            NSLog(@"Eight");
        } else if (number == 9) {
            NSLog(@"Nine");
        } 

    }
    return 0;
}

Однако у меня возникают проблемы при работе с большим количеством цифр.Я думал о том, чтобы использовать что-то вроде этого, чтобы разделить их:

            right_digit = number % 10;
        NSLog(@"%i", right_digit);
        number /= 10;

Но это привело бы к обратному результату.

Любой совет?

Спасибо

Ответы [ 3 ]

1 голос
/ 30 марта 2012

Использовать рекурсию

void printNumber(int a){
  if(a/10 > 0){
     printNumber(a/10);
  }

  int digit = a%10;
  switch(digit){
  {
    case 0:
       NSLog(@"Zero ");
       break;
    case 1:
       NSLog(@"One ");
       break;
    case 2:
       NSLog("Two ");
       break;
     ....
  }

}
0 голосов
/ 21 января 2014

NSNumberFormatter имеет стайлер, который поможет вам справиться с этим.

NSNumberFormatter *numberFormatter = [[NumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterSpellOutStyle;
0 голосов
/ 30 марта 2012

Итак, вы создаете список в обратном порядке, затем переворачиваете его и читаете номер пользователю.

Пользователь не увидит никакой разницы с точки зрения производительности.

Чтобы сделать это с массивом, вы можете посмотреть на этот вопрос:

Как я могу обратить NSArray в Objective-C?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...