Помещение строки в двухмерную матрицу с целью переполнения стека

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

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

Решение

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

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

Другие решения

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

Учитывая строку: "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

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

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
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector