2 D対称マトリクスのC言語実装
970 ワード
#include
#include
#include
void assign(int a[],int i,int j,int e){
if(i>=j)
a[i*(i-1)/2+j-1]=e;
else
a[j*(j-1)/2+i-1]=e;
}
int value(int a[],int i,int j){
if(i>=j)
return i*(i-1)/2+j-1;
else
return j*(j-1)/2+i-1;
}
int main(){
int *array=0,i,j;
int N,s,n,k;
printf(" :
");
scanf("%d",&N);
array=(int*)malloc(sizeof(int)*(N*(N+1)/2));
printf(" (%d ):
",N*(N+1)/2);
for(i=1;i<=N;i++)
for(j=1;j<=i;j++)
{
scanf("%d",&n);
assign(array,i,j,n);
}
for(i=1;i<=N;i++){
for(j=1;j<=N;j++){
k=value(array,i,j);
printf("%3d ",array[k]);
}
printf("
");
}
free(array);
system("pause");
return 0;
}