經過i大指導之後改成為:
#define ROW 1024
#define COL 1024
long int output[ROW];
long int matrix(long int arr[] [COL]);
long int matrix(long int arr[] [COL])
{
int i,j;
for(i=0;i<ROW;i++)
{
output[i]=0;
for(j=0;j<COL;j++)
{
output[i]=output[i]+ arr[i][j];
}
output[i]=output[i]/COL;
}
return output[i];
}
可是似乎對矩陣使用return不是個聰明的寫法,又參考了v大的解說和書本,又改寫為
#define ROW 1024
#define COL 1024
long int *average[ROW];
long int *matrix(long int *);
//其中arr位址已知;
long int *matrix(long int *arr)
{
int i,j;
for(i=0;i<ROW;i++)
{
for(j=0;j<COL;j++)
{
average[i] = *(*(arr+i)+j)/COL;
}
}
return average[i];
}
又好像怪怪的,還請各位多多指教,話說caller是C語言裡的函數嗎??
※ 引述《ioioioioioio (討戰是興趣)》之銘言:
: ※ 引述《cheekyboy (唷)》之銘言:
: : 請問各位大大們,
: : 現在我有一個假設1024乘1024的矩陣,想用c語言寫一個函數,
: : int A(int matrix);
: : 因此當我輸入一個矩陣時,
: : 可以將該輸入的矩陣橫列上的每一個元素相加取平均,
: : 然後該函數送回一個1行x1024列的矩陣,
: : 請問該如何寫呢??
: : 為入門新手還請各位多多幫忙,
: : 感恩
: : -----------------------------------------------------------
: : 以下為大E增加內容,若有修到推文,還請多多包涵,謝謝
: : 想寫一個矩陣函數,當給於一個n*n的矩陣時希望回傳一個 1*n的矩陣,
: : 其中回傳矩陣內的元素為所輸入矩陣的其中一列元素的平均值,
: : 目前想法為
: : #define ROW 1024
: : #define COL 1024
: : /* arr[] 為實驗數據已知 */
: : int matrix(int arr[] [COL]);
: : int main(void)
: : {
: : int i,j ;
: int output[1024]; //你確定要用int 不用double?
: for(i=0; i<ROW; i++)
: {
: output[i] = 0;
: for(j=0; j<COL; j++)
: {
: output[i] = output[i] + arr[i][j];
: }
: output[i] = output[i] / COL;
: }
: : 上面是參考"C語言教學手冊" "洪維恩" 改寫得
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.207.108