2011-06-28 16 views
-1

BigArrayという配列を作成する必要があります。 BigArrayは、配列の下の単語を含む必要があります。この配列の作成方法は?

「ユーザー」と呼ばれる3つのアレイがあります。私がしたいビッグ、中小

ユーザー1::猫、犬、コウモリ

Users2:アップル、マンゴー、バナナ、梨

Users3各このような配列は、その中の特定の単語等を有していますBigArrayの単語を次のように整理してください: 猫、アップル、ビッグ、ドッグ、マンゴー、スモール、バット、バナナ、梨

どうすればいいですか?

+1

を助けている場合BigArrayの充填の背後にあるロジックは何ですか?を参照してください。どの配列からどの要素を使用するのか? – dasdom

+0

BigArrayを作成するには、各Users配列から順番に要素を選択して作成する必要があります。 – meetpd

答えて

2

このソリューションは、あなたのUSERXアレイが同じサイズ持っていないすべての場合でも動作します:頭に浮かぶ

NSMutableArray BigArray = [[NSMutableArray alloc] init]; 
NSMutableArray u1 = [Users1 mutableCopy]; 
NSMutableArray u2 = [Users2 mutableCopy]; 
NSMutableArray u3 = [Users3 mutableCopy]; 
while ([u1 count] || [u2 count] || [u3 count]) { 
    if ([u1 count]) { 
     [BigArray addObject:[u1 objectAtIndex:0]]; 
     [u1 removeObjectAtIndex:0]; 
    } 
    if ([u2 count]) { 
     [BigArray addObject:[u2 objectAtIndex:0]]; 
     [u2 removeObjectAtIndex:0]; 
    } 
    if ([u3 count]) { 
     [BigArray addObject:[u3 objectAtIndex:0]]; 
     [u3 removeObjectAtIndex:0]; 
    } 
} 
[u1 release]; 
[u2 release]; 
[u3 release]; 
/* BigArray now contains what you need */ 
1
  1. 同じforloopにFinalArrayにインデックス0の小さなアレイのそれぞれからnまでの各オブジェクトを追加するには、小さなアレイ
  2. の各を通じて
  3. にFinalArray
  4. 実行をNSMutable配列を作成します。
0

まず最初は穏やかに複雑なループは(多分よりエレガントがあるさ方法、dunno)。

BOOL done = FALSE; 
NSArray *arrays = [NSArray arrayWithObjects:users1, users2, users3, nil]; 
NSArray *array; 
NSMutableArray *bigArray = [NSMutableArray arrayWithCapacity:users1.count+users2.count+users3.count]; 
int i = 0; 
int j; 
while (! done) { 
    done = TRUE; 
    for (j = 0; j < arrays.count; j++) { 
     array = [arrays objectAtIndex:j]; 
     if (i < array.count) { 
      [bigArray addObject:[array objectAtIndex:i]]; 
      done = FALSE; 
     } 
    } 

    i++; 
} 
1

これは

NSArray *a1 = [[NSArray alloc] initWithObjects:@"Cat", @"Dog", @"Bat",nil]; 
NSArray *a2 = [[NSArray alloc] initWithObjects:@"Apple", @"Mango", @"Banana", @"Pear",nil]; 
NSArray *a3 = [[NSArray alloc] initWithObjects:@"Big", @"Small",nil]; 
NSUInteger arrayLength = [a1 count]+[a2 count]+[a3 count]; 
NSMutableArray *finalMutableArray = [NSMutableArray arrayWithCapacity:(arrayLength)]; 
for (NSUInteger index = 0; index < [a2 count]; index++) { // take the size of the biggest array 
if(index < [a1 count]) 
    [finalMutableArray addObject:[a1 objectAtIndex:index]]; 
[finalMutableArray addObject:[a2 objectAtIndex:index]]; 
if(index < [a3 count]) 
    [finalMutableArray addObject:[a3 objectAtIndex:index]]; 
} 
NSArray *finalArray = [NSArray arrayWithArray:finalMutableArray]; 
[a1 release]; 
[a2 release]; 
[a3 release]; 
+0

なぜarrayLength * numberOfArraysを使用しましたか? arrayLength要素のみを持つ配列を作成しています。 – vakio

+0

答えを更新していました。更新されたplsは今確認する。 – visakh7

+0

今よく見えます。あなたの前のコードもうまくいきました。ちょっと見たところでちょっと考えました。 – vakio

関連する問題