Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2013, 23:27   #1
Лев2013
Новичок
Джуниор
 
Регистрация: 12.03.2013
Сообщений: 3
По умолчанию [Objective-c] Перебор элементов

Добрый день, я новичок в программировании на Objective-c, прошу сильно не ругаться. Просто прошу помощи.

1) Зная только про NSArray и NSMutableArray можно сделать сортировку таким образом? :
Создать 2 массива (например массив 1 и массив 2- оба например по 5 элементов) и поочереди вытаскивать из каждого элемент (случайным образом) и вводить на экран?

2) И ещё, я пытался сделать случайную вывод чисел, он почему-то только от 1-3 выводит.

Код:
       
#import <Foundation/Foundation.h>

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

    @autoreleasepool {
      
        NSMutableArray *parks = [[NSMutableArray alloc] init];
        
         NSString *park1 = @"Троллейбусный парк №1";
         NSString *park2= @"Троллейбусный парк №2";
         NSString *park3 = @"Троллейбусный парк №3";
         NSString *park4= @"Троллейбусный парк №4";
         NSString *park5= @"Троллейбусный парк №5";
        
        [parks addObject:park1];
        [parks addObject:park2];
        [parks addObject:park3];
        [parks addObject:park4];
        [parks addObject:park5];
        
        
        NSMutableArray *drivers = [[NSMutableArray alloc] init];
        
        NSString *driver1 = @"Водитель №1";
        NSString *driver2= @"Водитель №2";
        NSString *driver3 = @"Водитель №3";
        NSString *driver4= @"ТВодитель №4";
        NSString *driver5= @"Водитель №5";
        
        [drivers addObject:driver1];
        [drivers addObject:driver2];
        [drivers addObject:driver3];
        [drivers addObject:driver4];
        [drivers addObject:driver5];

      

        
        for (NSString *d in parks)
        {
            NSInteger randomIndex= random() % [parks count];
            
            long index=randomIndex;
            NSLog(@"Случайный индекс:%ld,", index);
        }

        
        

    }
    return 0;
}

Последний раз редактировалось Лев2013; 12.03.2013 в 23:30.
Лев2013 вне форума Ответить с цитированием
Старый 13.03.2013, 00:50   #2
Лев2013
Новичок
Джуниор
 
Регистрация: 12.03.2013
Сообщений: 3
По умолчанию

Разобрался:

Код:

#import <Foundation/Foundation.h>

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

    @autoreleasepool {
      
        NSMutableArray *parks = [[NSMutableArray alloc] init];
        
         NSString *park1 = @"Троллейбусный парк №1";
         NSString *park2= @"Троллейбусный парк №2";
         NSString *park3 = @"Троллейбусный парк №3";
         NSString *park4= @"Троллейбусный парк №4";
         NSString *park5= @"Троллейбусный парк №5";
        
        [parks addObject:park1];
        [parks addObject:park2];
        [parks addObject:park3];
        [parks addObject:park4];
        [parks addObject:park5];
        
            NSMutableArray *allParks=[[NSMutableArray alloc]initWithObjects: park1,park2,park3,park4,park5, nil];
        
        
        
        
        NSMutableArray *drivers = [[NSMutableArray alloc] init];
        
        NSString *driver1 = @"Водитель №1";
        NSString *driver2= @"Водитель №2";
        NSString *driver3 = @"Водитель №3";
        NSString *driver4= @"Водитель №4";
        NSString *driver5= @"Водитель №5";
        
        [drivers addObject:driver1];
        [drivers addObject:driver2];
        [drivers addObject:driver3];
        [drivers addObject:driver4];
        [drivers addObject:driver5];

          NSMutableArray *allDrivers=[[NSMutableArray alloc]initWithObjects: driver1,driver2,driver3,driver4,driver5, nil];

        


        for (NSString *d in parks, drivers)
        {
            NSInteger park_number=[allParks objectAtIndex:(random() % (0 - 5))];
            NSInteger driver_number=[allDrivers objectAtIndex:(random() % (0 - 5))];
            NSLog(@" %@ работает в '%@'", driver_number, park_number);

        }
           
    }
    return 0;
}

Результат:

Водитель №2 работает в 'Троллейбусный парк №4'
Водитель №1 работает в 'Троллейбусный парк №3'
Водитель №1 работает в 'Троллейбусный парк №4'
Водитель №3 работает в 'Троллейбусный парк №2'
Водитель №2 работает в 'Троллейбусный парк №5'
Лев2013 вне форума Ответить с цитированием
Старый 13.03.2013, 00:52   #3
Лев2013
Новичок
Джуниор
 
Регистрация: 12.03.2013
Сообщений: 3
По умолчанию

Возник другой вопрос, а как сделать так, чтобы если элемент уже использовался он не повторялся?
Лев2013 вне форума Ответить с цитированием
Старый 13.03.2013, 10:43   #4
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Возник другой вопрос, а как сделать так, чтобы если элемент уже использовался он не повторялся?
По сути, Вам нужно создать перестановку. Простейший способ - завести вспомогательный массив из целых чисел, изначально нулей. Далее выбирать в нём случайные нулевые элементы и устанавливать их в 1, выводя соответствующий элемент основного массива.

P.S. Хотя для случайного отношения достаточно перебрать водителей по порядку, назначая каждому случайный парк...
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор элементов в цикле epickgod Помощь студентам 10 10.10.2011 08:33
Перебор элементов Namolem Помощь студентам 1 17.04.2011 14:42
Перебор элементов. Vaigard Общие вопросы Delphi 9 03.01.2011 13:09
перебор элементов (Pascal) PianeR Помощь студентам 2 18.12.2010 00:52
Перебор элементов матрицы pikkk Общие вопросы Delphi 3 09.05.2008 14:45