|
さっき教えていただいた,
#include <stdio.h>
#include <malloc.h>
int main(void)
{
int **Data_pt;
int x, y;
int i;
scanf("%d", &x);
Data_pt = (int**)malloc(sizeof(int)*x);
scanf("%d", &y);
for(i = 0; i < x; i++)
Data_pt[i] = (int*)malloc(sizeof(int)*y);
for(i = 0; i < x; i++)
free(Data_pt[i]);
free(Data_pt);
return(0);
}
↑なんですが,このプログラム↓に応用したくて。
(魔方陣の行,列をユーザーが指定して,表示するプログラム。)
/* 魔方陣 */
#include <stdio.h>
/* メイン関数 */
void main(void)
{
/* 変数宣言 */
int su; /* ユーザーが決めた数
*/
int nData[100][100];
int i,j; /* 行,列 */
int count; /* カウント
*/
/* ユーザーの任意の数を入力 */
printf("奇数値を入力してください。:");
rewind(stdin);
scanf("%d",&su);
/* 初期化,データ格納 */
i = 0;
j = su/2;
count = 1;
nData[i][j] = count; /* 第1行目の中央に1を入れる
*/
for (count = 2; count <= (su * su);
count++)
{
if (count % su == 1) /* 次に入れる数を5で割り、余りが1の場合
*/
i++; /*
下のますめに */
else /*
それ以外は */
i--, j++; /*
斜め上に */
if (i < 0) /*
上にはみ出した場合 */
i = su-1; /*
その列の1番下のますめに */
if (j == su) /*
右にはみ出した場合は */
j = 0; /*
その行の1番左のますめに */
nData[i][j] = count; /*
入れる */
}
/* 出力 */
for (i = 0; i < su; i++)
{
printf("\n");
for (j = 0; j < su; j++)
{
if(nData[i][j] < 10)
printf(" 0%d ", nData[i][j]); /* 数値が1桁 */
if(nData[i][j] > 9)
printf(" %d ", nData[i][j]);
/* 数値が2桁 */
}
printf("\n");
}
/* Enter */
rewind(stdin);
getchar();
}
今はこう↑なっていて,mallocを使って,改良したいのですが,
どうも上手くいきません。
何とかなりませんか?お願いします!!
|