09/07/16 00:20:28
>>126 n次の対称行列 めんどうなのでC/C++
#include <stdio.h>
int A[100*101/2];
int main() {
int n, i, j, k, i1, j1;
printf("n?"); scanf("%d%*c", &n); if(n>100) return 1;
for(k=0, i=0; i<n; i++) { /* 成分の添字番号を表示 */
for(j=i; j<n; j++, k++) {
A[k] = k+1;
printf("N(%2d,%2d) = A(%2d)\n", i, j, k);
}
}
for(i=0; i<n; i++) { /* 行成分を表示 */
for(j=0; j<n; j++) {
if(i < j) i1=i, j1=j;
else i1=j, j1=i;
k = j1+i1*n-(i1*(i1+1)/2); // i
printf("A(%2d)=%2d", k, A[k]);
if(j < n-1) printf(", ");
}
puts("");
}
return 0;
}
/*
1 2 3 4
2 5 6 7
3 6 8 9
4 7 9 10
*/