2013-10-06 55 views
0

我正在嘗試編寫一個返回自定義大小的數組並使用隨機數填充的函數。我的整個代碼是這樣的:使用隨機數創建自定義數組大小

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

int check_error(int a); 
void initialize_array(int array[],int a); 
void print_array(int array[],int a); 
int replace(int array[],int i, int b, int c); 

int main(void) 
{ 
    int asize, array; 
    printf("Hello!\nPlease enter the size of the array:\n"); 
    scanf("%d", &asize); 
    check_error(asize); 
    while (check_error(asize)==0) 
    { 
      printf("Invalid input! Enter the size of the imput size again:\n"); 
      scanf("%d", &asize); 
    } 
      if (check_error(asize)==1) 
    { 
      initialize_array(array, asize); 
    } 
} 

int check_error(int a) 
{ 

    if (a> 0 && a <= 100) 
      return 1; 
    else 
      return 0; 
} 
void initialize_array(int array[], int a) 
{ 
    int i; 
    srand(time(NULL)); 
    for(i=0; i < a; i++) 
    { 
      array[i]=rand()%10; 
    } 
} 

具體而言,我需要幫助讓initialize_array按預期工作。

+0

你的問題到底是什麼?你的代碼在做什麼?你期望它做什麼? –

+0

我的問題是如何用隨機數字創建這個數組。該代碼從用戶處獲得一個整數值,並定義該數組的大小。的代碼進行檢查以查看是否數組大小是0和100之間,然後或者是0或1。我需要的程序,以創建一個數組是從0-9「A大小」大用隨機數來填充一維數組的那些點。 –

回答

2

在代碼中,移除先前的陣列的定義,然後做到這一點:

if (check_error(asize)==1) { 
     int array[asize]; 
     initialize_array(array, asize); 
     // other stuff here 
} 

注意,數組只是如果(check_error)語句的{'S}之間有效。

+0

+ +1只有在調用者端使用VLA,並保持'initialize_array()'的退出實現,才能真正做到這一點。另外,增加(爲了矯正過度)功能提供了作爲一對參數生成的隨機數範圍的下限和上限,這將是一個很好的接觸。 +1不管。這是一個可行的解決方案。 – WhozCraig

+0

@WhozCraig,VLA上的好點。我沒有想到這一點。 –

+0

實驗表明,我不能在我的代碼中使用指針,必須使用函數並通過函數傳遞數組。 –