2015-09-02 64 views
-2

我已創建此2D 21x21陣列,並將其值設置爲-1。我寫了它來打印地址和值,不知何故它只是在[6] [19]開始爲什麼?用C/Average/Max值中的隨機數填充定義的2D陣列

我想要做的是在同一個數組中使用從0到100的隨機數替換一些-1值。我知道我需要用函數srand種子,但我在連接功能的問題,因爲我在C.

共初學者

編輯1:

現在我可以打印整個陣列,並填充隨機數字。對於我剛剛分配的-1值,對於這種情況很好。

我想要,現在被發現的所有值的平均值和最大值,所以我有什麼是:

#include<stdio.h> 
#include <stdlib.h> 
#include <time.h> 


int main() 
{ 

int a[21][21], i , j; 

for (i = 0; i < 21; i++) 
{ 
    for (j = 0; j < 21; j++) 
    { 
     a[i][j] = GetRand(0, 100); 
     a[7][15] = -1; 
     a[10][6] = -1; 
     a[13][5] = -1; 
     a[15][17] = -1; 
     a[17][17] = -1; 
     a[19][6] = -1; 
     printf("%3d" , a[i][j]); 
    } 
    printf("\n"); 
} 
return 0; 
} 



// random seed 
int GetRand(int min, int max); 
int get() { 
int i, r; 
for (i = 0; i < 21; i++) 
{ 
r = GetRand(0, 100); 
printf("Your number is %d \n", r); 
} 
return(0); 
} 

int GetRand(int min, int max) 
{ 
static int Init = 0; 
int rc; 

if (Init == 0) 
{ 
srand(time(NULL)); 
Init = 1; 
} 

rc = (rand() % (max - min +1) +min); 

return (rc); 
} 



// average 

int avg() 

float sum=0.0; 

for(i = 0; i <= 21; i = i + 1) { 


    for(j = 0; j <= 21; j = j + 1){ 


     sum = sum + a[21][21]; 
    } 

printf("The the average number is %.2f\n", sum/21); 
} 




//find maximum of all values  

int *pv = &a[0][0]; 
max = min = 0; 
for (i = 1; i < i*j; ++i){ 
    if (pv[i] > pv[max]) 
     max =i; 
    if (pv[i] < pv[min]) 
     min = i; 
} 
printf("The max value is %d in row %d, col %d\n", pv[max], max/j, max%j); 


return 0; 
} 

對於一般的函數,編譯器會告訴我之前,我所預期的聲明,這是「浮動總和= 0.0;」但我還沒有能夠解決這個問題。

對於發現最大功能我不確定我在那裏做什麼,我只是對它是如何做的模糊的想法...我是否在正確的方向?

謝謝!

+2

'a [i] [j] = GetRand(0,100);'而不是'a [i] [j] = -1;' –

+0

我不確信實際問題和您對問題的描述在這裏匹配。你說它「從[6] [19]開始」。我敢打賭,這與你終端中的回滾緩衝區有關。嘗試通過'more'或'less'管道輸出。另一部分似乎對如何編譯和鏈接多個源文件感到困惑。當然,你可以在你的其他源文件中包含'GetRand'的代碼。除非'main'只出現在其中一箇中,否則您將無法鏈接這兩個源文件。 – paddy

+0

我的輸出不好。所以我寫了一個[i] [j] = GetRand(0,100);而不是[i] [j] = -1;現在我的數組有從0到100的隨機數,我的問題是我需要它有一些-1值。 例如: [2] [3] = 9 [2] [4] = - 1 [2] [5] = 23 [2] [6] = - 1 和我不知道我怎麼能做到這一點 – Mimic03

回答

2

這很簡單:只需將您的GetRand函數的結果分配給矩陣條目即可。