Повторяющийся числовой массив

У меня возникли проблемы с созданием программы, которая принимает числа в массиве и возвращает их в виде строки. Мой следующий код в моем

файл main.m:

#import <Foundation/Foundation.h>
#import "NumberRepeater.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NumberRepeater *repeater1 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @10]]];

        [repeater1 initWithNumbers:@[@[@1, @10]]];
        NSLog(@"%@", [repeater1 process]);

        NumberRepeater *repeater2 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @2], @[@2, @3]]];

        NSLog(@"%@", [repeater2 process]);

        NumberRepeater *repeater3 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@10, @4], @[@34, @6], @[@92, @2]]];

        NSLog(@"%@", [repeater3 process]);
    }
    return 0;
}

Код в моем файле NumberRepeater.h:

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NumberRepeater : NSObject
- (instancetype)initWithNumbers:(NSArray *)numbers;

- (NSString *)process;


@end

NS_ASSUME_NONNULL_END

Код в моем файле NumberRepeater.m:

#import <Foundation/Foundation.h>
#import "NumberRepeater.h"
@implementation NumberRepeater

- (instancetype)initWithNumbers:(NSArray *)numbers {
    NumberRepeater *repeater1 = [[NumberRepeater alloc] 
initWithNumbers: @[@[@1, @10]]];
    [repeater1 initWithNumbers:@[@[@1, @10]]];
    NSLog(@"%@", repeater1);

    return 0;
}

- (NSString *)process {


    return 0;
}

@end

Мой ожидаемый результат должен быть:

1111111111
11, 222
10101010, 343434343434, 9292

Это вовсе не школьное задание, которое мне нужно решать. Я хотел бы получить решение, однако руководство к нему было бы отличным. Я чувствую, что у меня это почти есть, поскольку я задавал вопросы, подобные этому, и получил результат, который мне нужен, но мне явно не хватает, я просто не знаю, что. Я понимаю, что в моем методе процесса отсутствует код, просто я не знаю, что туда вставить. Любая помощь будет принята с благодарностью!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
136
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

-(NSString *)getStringFromArray:(NSArray <NSNumber *> *)array{
    NSString *numberString = @"";
    for (NSNumber *no in array) {
        numberString = [numberString stringByAppendingString:no.stringValue];
    }
    return numberString;
}

Вызовите метод в своем классе следующим образом: -

NSLog(@"Number String %@",[self getStringFromArray:@[@1,@2,@3,@4]]);

Вывод

Number String 1234

Мой ожидаемый результат должен быть: 1111111111 11, 222 10101010, 343434343434, 9292

OmieiOS 08.12.2018 17:39
Ответ принят как подходящий

• Мне нужно объяснить вам синтаксис массива в соответствии с вашим вопросом,

  1. Сначала вы можете объявить массив таким образом @[@1,@2,....], это массив NSNumber объект как значение Int, потому что массив содержит только объекты id, поэтому мы не можем использовать Int напрямую, но мы используем NSnumber, как это @ 1

  2. объекты внутри массива могут быть самим массивом, поэтому мы можем объявить массив объекта массива как в этом примере @[@[@10, @4], @[@3, @6], @[@2, @9]] этот массив массива @[@[],@[],....etc]

• по вашему вопросу даю вам NSArray с двумя предметами просто верните мне строку, в которой первый элемент повторяется (второй элемент) раз

   Example :

        Input @[@1,@2]      repeat number#1  two times
        Output should be 11

        Input @[@1,@10]      repeat number#1  10 times
        Output should be 1111111111

       Input @[@[@1,@3],@[@3,@4]]      repeat number#1  3 times , number#3   4 time
        Output should be 111 3333

Решение

NumberRepeater.h

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface NumberRepeater : NSObject {
      NSArray * numbers; // private number array will be initialized during initialization of object
}
- (instancetype)initWithNumbers:(NSArray *)numbers;

- (NSString *)process;
@end

NS_ASSUME_NONNULL_END

NumberRepeater.m

#import "NumberRepeater.h"
#import <Foundation/Foundation.h>


// NumberRepeater Extention for set private numbers
@interface NumberRepeater ()
@property (nonatomic,retain) NSArray *numbers;
@end


@implementation NumberRepeater
@synthesize numbers;

- (instancetype)initWithNumbers:(NSArray *)numbers {

    self = [super init];
    if (self) {
        self.numbers = numbers;
    }
    return self;
}

- (NSString *)process {

// if numbers have No Data
   if (numbers.count == 0) { return  @"0"; }

    // Array of array  each array have two element first is number to repeat and second have number of repetation
    // Example @[@1, @2]   repeat number(1)   TWO times  so out put should be 11
 //   @[@[@1, @2], @[@2, @3]]

    NSMutableString * output = [NSMutableString new];

    for (NSArray*item in numbers) {

        // Array should be with this Format
          // Example @[@1, @2]   repeat number(1)   TWO times

              // assert item have tow items only  like that @[@1,@2]
           NSAssert(item.count == 2,@"Array Should have Two items only");

        NSNumber *numberToRepeat = item[0]; // repeat
        NSNumber *repetitionCount = item[1]; //repetition Count

        NSMutableString * repeatdString = [NSMutableString new];

        for (NSInteger i= 0; i < [repetitionCount integerValue] ; i++) {
            [repeatdString appendString:[numberToRepeat stringValue]];
        }

        [output appendString:repeatdString];
        [output appendFormat:@" "]; // space on join with muti array

    }


    return output;
}
@end

main.m

#import <Foundation/Foundation.h>
#import "NumberRepeater.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NumberRepeater *repeater1 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @10]]];

        NSLog(@"%@", [repeater1 process]);

        NumberRepeater *repeater2 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@1, @2], @[@2, @3]]];

        NSLog(@"%@", [repeater2 process]);

        NumberRepeater *repeater3 = [[NumberRepeater alloc] 
        initWithNumbers: @[@[@10, @4], @[@34, @6], @[@92, @2]]];

        NSLog(@"%@", [repeater3 process]);
    }
    return 0;
}

Спасибо за ваш ответ. Так что же должен содержать файл main.m?

OmieiOS 09.12.2018 04:36

Просто укажите свой вопрос

Abdelahad Darwish 09.12.2018 05:20

@OmieiOS проверьте выше

Abdelahad Darwish 09.12.2018 05:52

Другие вопросы по теме