2014-01-18 2 views
0

Итак, я использую Objective C++, и я хочу поместить строку в массив int by X by X (X = length string/4) с помощью кода ASCII. Предполагается, что первая четверть строки (которая полностью отформатирована в массив 4 х Х) должна находиться в [0] [col], вторая четверть - в [1] [col], третья четверть - в [2] [col] и четвертой четверти в [3] [col]. Поэтому я попробовал следующее с 4 циклами, но он вообще не работает, и я просто не могу заставить его работать как-то. Любые предложения будут ценны.Ввод строки в 2D-матрицу в Objective C++

textMatrix - это матрица, в которую я хочу поместить номер NSString/ASCII, а inputFinal - это сама NSString. Длина * (1/4) или что-то еще всегда будет целым числом.

for(int i = 0; i < length*(1/4); i++) 
{ 
    textMatrix[0][i] = (int)[inputFinal characterAtIndex: i]; 
} 
for(int j = length*(1/4); j < length*(2/4); j++) 
{ 
    textMatrix[1][j] = (int)[inputFinal characterAtIndex: j]; 

} 
for(int k = length*(2/4); k < length*(3/4); k++) 
{ 
    textMatrix[2][k] = (int)[inputFinal characterAtIndex: k]; 
} 
for(int l = length*(3/4); l < length; l++) 
{ 
    textMatrix[3][l] = (int)[inputFinal characterAtIndex: l]; 
} 
+0

Как вы убедитесь, что он не работает, есть вы напечатали значения? – bsarr007

+0

Я использовал точки останова, а затем проверял значения в textMatrix, но его нуль в значительной степени – jundl77

ответ

0

фактически двойную петлю как и в конечном итоге работает лучше для меня:

int index = 0; 
for(int row = 0; row < 4; row++) 
{ 
    for(int col = 0; col < length/4; col++) 
    { 
     textMatrix[row][col] = (int)[inputFinal characterAtIndex:index]; 
     index++; 
    } 
} 
0

Я не думаю, что я понимаю, что вы пытаетесь сделать ..

Получая строку: "Here";

вы хотите:

Matrix[0][0] = 'H'; 
Matrix[1][1] = 'e'; 
Matrix[2][2] = 'r'; 
Matrix[3][3] = 'e'; 

Если да, то это работает:

#import <objc/objc.h> 
#import <objc/Object.h> 
#import <Foundation/Foundation.h> 

@implementation TestObj 
int main() 
{ 
    NSString* str = @"Here"; 

    int matrix[4][4] = {0}; 

    for (int i = 0, j = 0; j < 4; ++j) 
    { 
     matrix[i][i++] = (int) [str characterAtIndex: j]; 
    } 

    for (int i = 0; i < 4; ++i) 
    { 
     for (int j = 0; j < 4; ++j) 
     { 
      printf("%c", (char)matrix[i][j]); 
     } 
    } 

    return 0; 
} 
@end 

Вышеприведенные распечатки Here.

+0

Ну вот, что я пытаюсь сделать. Предположим, мы используем «работает нормально», тогда мне бы хотелось: Matrix [0] [0] = 'w'; Матрица [0] [1] = 'o'; Матрица [1] [0] = 'r'; Матрица [1] [1] = 'k'; Матрица [2] [0] = 's'; Матрица [2] [1] = ''; Матрица [3] [0] = 'o'; Матрица [3] [1] = 'k'; Матрица [3] [3] = 'e'; – jundl77

1

Вы можете переписать ваши 4 петли в 1 петлю:

for(int i = 0; i < length; i++) 
{ 
    textMatrix[i/4][i%4] = (int)[inputFinal characterAtIndex:i]; 
} 
Смежные вопросы