Цитата(orthrus @ 15.12.2007, 08:24 ) | | Это не квадратная матрица, а элементы верхнего треугольника это наверное элементы находящиеся выше главной диагонали. |
Так что-ли?
| Код | x 0 1 3 6 x x 2 4 7 x x x 5 8 x x x x 9 x x x x x
|
Тогда вот:
| Код | #include <stdio.h>
int main() { int src[] = {0,1,3,6, 2,4,7, 5,8, 9}; const int len = sizeof(src) / sizeof(src[0]); int dst[len]; int i, j, n, size, h, k, m = 0; char * matr[] = { "x 0 1 3 6", "x x 2 4 7", "x x x 5 8", "x x x x 9", "x x x x x" };
for(i = len, size = 0; i; i -= size++);
puts("For matrix: "); for(i = 0; i < size; i++) printf(" %s\n", matr[i]);
printf("\nSource:\n "); for(i = 0; i < len; i++) printf("%d ", src[i]); for(i = 0, n = 1; i < size; n++, i++) for(j = 0, k = i, h = size - 2; j < n; k += h--, j++) dst[m++] = src[k]; printf("\nResult:\n "); for(i = 0; i < len; i++) printf("%d ", dst[i]);
puts("");
return 0; } |
Наверняка есть вариант лучше и проще, но что-то в бестолковку ничего путного не лезет.
|